[php] case-insensitive str_replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Ik heb een lijstje woorden dat ik wil vervangen (scheldwoorden) , ik dacht lekker simpel

PHP:
1
2
3
$message = "Blaat"; 
$message = str_replace("blaat", "<b>wh00t</b>", $message); 
echo($message);


Maar dat zit er dus niet in :P

Ik heb even gezocht in de manual maar zag er geen andere oplossing voor, deze zal er vast wel zijn maar om al mn text nou eerst naar lowercase te gooien voordat ik het kan checken lijkt me overbodig :(

Ja man


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

van de user-comments van str_replace:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
function stri_replace( $find, $replace, $string )
{
   $parts = explode( strtolower($find), strtolower($string) );

   $pos = 0;

   foreach( $parts as $key=>$part ){
      $parts[ $key ] = substr($string, $pos, strlen($part));
      $pos += strlen($part) + strlen($find);
   }

  return( join( $replace, $parts ) );
}


of

PHP:
1
2
3
function stri_replace($old, $new, $haystack){
 return preg_replace('/'.quotemeta($old).'/i', $new, $haystack);
}

[ Voor 17% gewijzigd door thomaske op 13-12-2002 12:34 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

thomaske schreef op 13 december 2002 @ 12:32:
PHP:
1
2
3
function stri_replace($old, $new, $haystack){
 return preg_replace('/'.quotemeta($old).'/i', $new, $haystack);
}

He bah, quotemeta samen met preg* ? Erg spannend als je $old een / bevat ;)

Gebruik liever:
PHP:
1
2
3
function stri_replace($old, $new, $haystack){
 return preg_replace('/'. preg_quote($old, '/') . '/i', $new, $haystack);
}

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

ACM schreef op 13 december 2002 @ 12:37:

[...]

He bah, quotemeta samen met preg* ? Erg spannend als je $old een / bevat ;)

[..]
Sorry :)
Had em alleen maar ge-copy-paste uit de (user-comments van de) manual ;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

thomaske schreef op 13 December 2002 @ 12:52:
Sorry :)
Had em alleen maar ge-copy-paste uit de (user-comments van de) manual ;)

Dat had ik gezien hoor :)
Maar ik vond het wel nuttig om het even te verbeteren.