Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne problem
adamp359
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 7.06.2012

Ostrzeżenie: (0%)
-----


Witam
Mam problem z konstruowaniem wyrażenia regularnego które będzie szukać danego słowa.

  1. $tresc = 'Próby absorpcyjny najbardziej gorąco oczek i dad as';
  2.  
  3. $dane = explode(' ',$tresc);
  4.  
  5. $z = 0;
  6. $ile = count($dane)-1;
  7. for($i = 0; $i<= $ile; $i++)
  8. {
  9. //echo $i;
  10. $slowo = trim($dane[$i]);
  11. if (!empty($slowo))
  12. {
  13. $wartosc = preg_match('/{.*'.$slowo.'.*}/', $synonimy, $out);
  14. print_r($out);
  15. if ($wartosc == 1)
  16. {
  17. $tekssyn .= $out[0].' ';
  18. }
  19. else
  20. {
  21. $tekssyn .= $slowo.' ';
  22. }
  23. }
  24.  
  25. }
  26.  
  27. echo $tekssyn;

Jakie zadanie ma skrypt ze zmiennej $tresc rozbijamy na wyrazy następnie w pętli for sprawdzamy czy dany wyraz znajduje się w pliku txt
dane w pliku txt wyglądają tak: (zmienna $synonimy)

{absolutyzm|monarchiaabsolutna|władzaabsolutna}
{absolwent|wychowanek}
{absorbent|pochłaniacz|substancjapochłaniająca}
{absorber|aparatabsorpcyjny}
{absorbować|asymilować|przyswajać|wchłaniać|frapować|pochłaniać|zajmować|zaprząt
ać}
{absorbując|asymilując|przyswajając|wchłaniając|frapując|pochłaniając|zajmując|z
aprzątając}
{absorbujący|chłonny|wchłaniający}
{absorpcja|pochłanianie|wchłanianie}


Problem polega na tym iż $wartosc = preg_match('/{.*'.$slowo.'.*}/', $synonimy, $out); sprawdza mi czy występuje dany znak lub ciąg na przykład szukamy litery "i" to jeśli w bazie będzie wyżej wyraz "interpretacja" to zostanie on zakwalifikowany. Druga sprawa jeśli skrypt znajdzie już dane słowo w bazie chce aby zamiast niego pojawiło się cały ciąg w klamrach na przykład {absorbujący|chłonny|wchłaniający} (ale to niby działa)

Trzecia sprawa to coś co najbardziej mnie martwi obciążenie serwera podczas szukania słów baza w txt ma prawie 3MB jak rozwiązać ten problem ma ktoś jakiś pomysł za wszystkie sugestie będę bardzo wdzięczny bo morduje się już z tym 3 dni.

Aha próbowałem także takiego wyrażenia regularnego $wartosc = preg_match('/\{.*[\{|\|]'.$slowo.'.*\}/', $synonimy, $out); lecz w tym przypadku znajduje mi tylko wyrazy które zaczynają się na daną literę lub ciąg liter a ja nadal chce konkretnie cały wyraz aby się zgadzał.

Jeszcze raz bardzo proszę o pomoc z góry dzięki.

Ten post edytował adamp359 27.11.2012, 09:31:17
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 15:35