Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] pytanie odnośnie wyrażeń regularnych
-___-
post
Post #1





Goście







Witam,
piszę sobie skrypt który mi będzie zamieniać wyrazy na ich odpowiedniki np. słowo ala zamieni mi na ala ma kota (coś jak cenzura). napisałem sobie wyrażenie

  1. <?php
  2. $text = preg_replace( "/".$r['pattern']."/i", "$r['replace']", $text );
  3. ?>


tyle tylko, że jeżeli $r['pattern'] = ala a w tekście jest np. w tartaku nie ma bala to słowo ala też zostanie zamienione ? chcę zrobić dopasowanie strict, czyli jeżeli ma zamieniać ala to ma zamienić ala a nie także bala. Jak ulepszyć to wyrażenie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) bardzo proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
barthpl
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


Kiepsko szukałeś. Ostatnie wątki o cenzurowaniu to na przykład: Temat: PHPCenzura lub Temat: PHPCenzura.

Jeżeli natomiast chodzi o dokładne dopasowanie (takie jak opisujesz) to wyrażenie powinno uwzględniać znak poprzedzający (np.: spacja). Czyli powinno to wyglądać w następujący sposób:
  1. <?php
  2. echo $text = "Ala ma kota a kot ala gala ma alab balangę w głowie ala.<br/>";
  3.  
  4. $pattern[] = "/([s]{1})ala([s]{1})/i";
  5. $pattern[] = "/([^a-z0-1]{1})ala([s]{1})/i";
  6. $pattern[] = "/([s]{1})ala([^a-z0-1]{1})/i";
  7.  
  8. $replacement[] = " +++ ";
  9. $replacement[] = "+++ ";
  10. $replacement[] = " +++";
  11.  
  12. $text = preg_replace( $pattern, $replacement, $text );
  13.  
  14. echo $text;
  15. ?>


Zapewne istnieje lepszy sposób ale w tej chwili mi nie przychodzi do głowy. Działa chyba poprawnie bo nie zamienia 'ala' w słowie 'balangę'. Wynik skryptu jest następujący:
  1. Ala ma kota a kot ala gala ma alab balangę w głowie ala.<br/>
  2. Ala ma kota a kot +++ gala ma alab bALAngę w głowie +++<br/>


edit -->
właśnie zauważyłem, że ucina znaki interpunkcyjne... a zatem trzeba to jeszcze dopracować.

Ten post edytował barthpl 19.08.2008, 11:53:18
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: 27.12.2025 - 15:51