Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cenzura
Forum PHP.pl > Forum > PHP
Bora
mam taki algorytm do podmiany slow $pos = strpos($string, strtolower($wiersz[1]));if ($pos === true){$string = ereg_replace(strtolower($wiersz[1]), $cenzurowane, strtolower($string));}} wylapuje mi niezaleznie od pisowni male i duze litery niestety po tym przeksztalceniu wszystko mam malymi literami jak innaczej ro zrobic zeby dzialalo albo jakiej funkcji uzyc?
scanner
Proszę użyć odpowiedniego BBCode (Instrukcja) dla zaznaczenie listingu php.
wassago
no wlasnie... mialem taki sam problem, az z tego powodu przenioslem sie na css'y :wink: - zmiana na upper/lowercase...

ps. bora - zmien kod na bbcode...

UPDATE: ahhh scanner :!: szybszy byles :wink:
Bora
Kod php
  1. <?php
  2. while($wierszo = mysql_fetch_row($wyniko))
  3. {
  4. $pos = strpos($tresc, &#092;"$wierszo[1]\");
  5.  if ($pos === true){
  6.  $tresc = str_replace(&#092;"$wierszo[1]\",\"$cenzurowane\",\"$tresc\");
  7.  }
  8. }
  9. ?>

czy jest na toi inny sposób i czy moźna zastąpić to while szybszą metodą?
scanner
usuń zbędne "" w str_replace.
Pozatym, nie wydaje mi się, aby przy porównywaniu dop TRUE konieczne było sprawdzanie "===", ale moge się mylić.
While masz dobre, nie wiem, czego od niego chcesz.
Jeśli chcesz zrobić zcenzurowanie, przejrzyj kod forum phpBB. Tam jest zamieszane, ale...
A co z tym lowercasem,? Uporałeś się, czy nie, bo nie wiem...
Bora
niestety nie
siedziałem pół nocy nad tym i paroma innymi rzerczami i nic
KaMeLeOn
Czy mi się zdaje, czy funkcja <b>strpos()</b> jest typu INT:
Cytat
int <b>strpos</b>( string haystack, string needle [, int offset])

Więc chyba tak:
  1. <?php
  2. while($wierszo = mysql_fetch_row($wyniko))
  3. {
  4. $pos = strpos($tresc, $wierszo[1]);
  5. if($pos !== false)
  6. {
  7. $tresc = str_replace($wierszo[1], $cenzurowane, $tresc);
  8. }
  9. }
  10. ?>
Bora
  1. <?php
  2.  
  3. while($wierszo = mysql_fetch_row($wyniko)) 
  4. { 
  5. $pos = strpos(strtolower($tresc), $wierszo[1]); 
  6.  if($pos !== false) 
  7.  { 
  8. $tresc = str_replace($wierszo[1], $cenzurowane, strtolower($tresc)); 
  9.  } 
  10. } 
  11. ?>

To jest przykład z manuala:
  1. <?php
  2. $mystring = 'abc';
  3. $findme  = 'a';
  4. $pos = strpos($mystring, $findme);
  5.  
  6. // Note our use of ===. Simply == would not work as expected
  7. // because the position of 'a' was the 0th (first) character.
  8. if ($pos === false) {
  9. echo &#092;"The string '$findme' was not found in the string '$mystring'\";
  10. } else {
  11. echo &#092;"The string '$findme' was found in the string '$mystring'\";
  12. echo &#092;" and exists at position $pos\";
  13. }
  14.  
  15. ?>

Ale problem polega na czymś innym chodzi ze dzieki :
  1. <?php
  2. $pos = strpos($tresc, $wierszo[1]); 
  3.  if($pos !== false) 
  4. ?>

wiem czy szukane slowo jest w stringu
Teraz chce je zamienić ale nie wiem jak to zrobic bez zmieny reszty stringu i zeby zamienialo niezaleznie od wielkiej i malej litery (dlatego przy szukaniu korzystam z strtolower

ps sorry w 1 poscie dalem z strtolowet ale jak dawalem potem w bbcoce dalem wersje bez strtolower a wlasnie o to mi chodzilo
KaMeLeOn
Cytat
Teraz chce je zamienić ale nie wiem jak to zrobic bez zmieny reszty stringu i zeby zamienialo niezaleznie od wielkiej i malej litery (dlatego przy szukaniu korzystam z strtolower

No to użyj funkcji eregi_replace()...
kurtz
Cytat
Teraz chce je zamienić ale nie wiem jak to zrobic bez zmieny reszty stringu i zeby zamienialo niezaleznie od wielkiej i malej litery (dlatego przy szukaniu korzystam z strtolower

ps sorry w 1 poscie dalem z strtolowet ale jak dawalem potem w bbcoce dalem wersje bez strtolower a wlasnie o to mi chodzilo

1) od ereg_replace szybszy sie preg_replace
2) nie musisz sprawdzac czy "slowo" jest w "text" przed podmina. jesli go nie bedzie nic nie zostanie podmienione ;)
3) strtolower w tym wypadku nie jest idealny bo mozesz strlowerowac za duzo

moja sugestia:
uzyj preg_replace i modyfikatorem i a jak bardzo sie przyzwycziles do eregow to eregi ktore zmeinaija niezlaeznie od znakow (sa jednak wolniejsze od pregow).


pozdrawiam
KaMeLeOn
Cytat
od ereg_replace szybszy sie preg_replace  
Ale preg_replace() nie jest case insensitive
kurtz
Cytat
Cytat
od ereg_replace szybszy sie preg_replace  
Ale preg_replace() nie jest case insensitive
???

a modyfikator i to cio to jest?...


pozdrawiam
KaMeLeOn
Cytat
questionmark.gif?

OK, OK... już wiem o co chodzi....

Poprzedni post jest nieaktualny...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.