Mam problem z konstruowaniem wyrażenia regularnego które będzie szukać danego słowa.
$tresc = 'Próby absorpcyjny najbardziej gorąco oczek i dad as'; $z = 0; for($i = 0; $i<= $ile; $i++) { //echo $i; { if ($wartosc == 1) { $tekssyn .= $out[0].' '; } else { $tekssyn .= $slowo.' '; } } }
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.