Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> cenzura
Bora
post 17.06.2003, 07:27:11
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


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?
Go to the top of the page
+Quote Post
scanner
post 17.06.2003, 07:43:14
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Proszę użyć odpowiedniego BBCode (Instrukcja) dla zaznaczenie listingu php.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
wassago
post 17.06.2003, 07:45:46
Post #3





Grupa: Przyjaciele php.pl
Postów: 701
Pomógł: 0
Dołączył: 26.06.2002
Skąd: Londyn

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


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:


--------------------
Go to the top of the page
+Quote Post
Bora
post 17.06.2003, 07:58:04
Post #4





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


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ą?
Go to the top of the page
+Quote Post
scanner
post 17.06.2003, 08:18:49
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




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...


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Bora
post 17.06.2003, 08:25:19
Post #6





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


niestety nie
siedziałem pół nocy nad tym i paroma innymi rzerczami i nic
Go to the top of the page
+Quote Post
KaMeLeOn
post 17.06.2003, 14:04:14
Post #7





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


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. ?>


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
Bora
post 17.06.2003, 14:24:21
Post #8





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


  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
Go to the top of the page
+Quote Post
KaMeLeOn
post 17.06.2003, 14:37:28
Post #9





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


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()...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
kurtz
post 17.06.2003, 14:53:08
Post #10





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


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


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
KaMeLeOn
post 17.06.2003, 15:00:11
Post #11





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Cytat
od ereg_replace szybszy sie preg_replace  
Ale preg_replace() nie jest case insensitive


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
kurtz
post 17.06.2003, 15:01:33
Post #12





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


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

a modyfikator i to cio to jest?...


pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
KaMeLeOn
post 17.06.2003, 15:04:22
Post #13





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


Cytat
questionmark.gif?

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

Poprzedni post jest nieaktualny...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 21:34