ďťż

[php] wyrażenia regularne wyszukanie dokładnego wyrazu

       

Podstrony


telcocafe

Potrzebuję wyszukać za pomocą preg_match dokładnie znanego wyrazu, czyli szukając w tekście "wyraz"
tekst wyraz, wyraz tekst aawyrazaa
Chcę odnaleźć tylko te, które są samodzielnymi słowami... czyli również takie, po których jest przecinek itd. ale nie takie które znajdują sie w środku innego wyrazu. W wynikach nie chce otrzymywać ani spacji, ani znaków przestankowych itd. czyli chociaż za prawidłowy uzna fragment "wyraz," to w wynikach chce otrzymać tylko "wyraz"



Hmmm, może to kiepski pomysł, ale pomyśl nad ereg() i odpowiednimi znakami specjalnymi do tej funkcji. Możesz wyszukiwać i akceptować wyrazy z przecinkami, kropkami, dwukropkami etc. , a odrzucać te które są w środku innego ciągu znaków.

To nie jest problemem, ale jest nieoptymalnym rozwiązaniem, które mnie nie interesuje :] wyrażenia regularne to temat, który w wielu wypadkach mnie przerasta, a nie byłoby głupi się nauczyć. wzorzec /[^[:alnum:]]wyraz[^[:alnum:]]/ zwraca mi "wyraz", "wyraz.", " wyraz " itd. a nie chce tego poddawać kolejnej obróbce


In this case, $matches[0] is the first set of matches, and $matches[0][0] has text matched by full pattern, $matches[0][1] has text matched by first subpattern and so on.

<?php $pattern = "/([^::alnum::])(wyraz)([^::alnum:: ])/"; $subject = "To jest tekst - zawiera wyraz. Wyraz, wyraz, wyraz! Wyraz-wyrazem-wyraz popycha. Wyraz (tak, wyraz). Ale czy wyraz? \"Wyraz\"... 'Wyraz'... I cóż, że wyraz: czyż wyraz?! Oto (wyraz) wyraz…"; preg_match_all($pattern,strtolower($subject),$matches); echo $subject; echo "<pre>"; echo '$matches:'."\n"; var_dump($matches); echo "\n"."\n".'$matches[2]:'."\n"; print_r($matches[2]); echo '</pre>'; ?>



to jeszcze małe pytanko jak to wykorzystać do preg_replace ?? i po co strtolower jak można skorzystać z flagi /i?? :P [to moja upierdliwość, ale fakt]
Użytkownik raganarok edytował ten post 05 sierpień 2007, 07:16
<?php $pattern = array("/([^alnum])(wyraz)([^alnum])/","/( [^alnum])(Wyraz)([^alnum])/"); $replacement = array("\\1blad\\3","\\1Blad\\3"); // tu ciekawie: \\1 - pierwszy nawias, \\3 - trzeci nawias $subject = "To jest tekst - zawiera wyraz. wyraz, wyraz! Wyraz-wyrazem-wyraz popycha. Wyraz (tak, wyraz). Ale czy wyraz? \"Wyraz\"... 'Wyraz'... I coz, ze wyraz: czyz wyraz?! Oto (wyraz) wyraz..."; echo $subject.'<br/>'; echo preg_replace($pattern,$replacement,$subject); ?>

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.