ereg_replace() und Regular Expressions

Ardaric

Erfahrenes Mitglied
Hallo! Ich möchte, dass alle Zeichen, außer Buchstaben und Ziffern durch einen Unterstrich "_" ersetzt werden.

Ich habe etwas geforscht und danach dachte ich, es würde so gehen. Leider eben nicht. :(

Und worin liegt der Unterschied zwischen ereg_replace() und preg_replace()

PHP:
<?php
$inhalt = '!\"§$%&/(   _  )=?abc ABC§123'; // String
$suchmuster = '\W*';
$ersatz = '_';

$inhalt = eregi_replace($suchmuster, $ersatz, $inhalt);

echo $inhalt; // Soll eigentlich ___________________abc_ABC_123 ausgeben.
// Stattdessen: _!_\_"_§_$_%_&_/_(_ _ _ ___ _ _)_=_?_a_b_c_ _A_B_C_§_1_2_3_
?>


Daniel
 
Aha, Danke!

Kann ich aber auch sagen: Ersetze alle Sonderzeichen (\W) aber nicht den Punkt (\.) mit einem Unterstrich ("_")?

So zum Beispiel: '/[^\.]\W[^\.]/'

Leider erhalte ich mit folgenden String
'!\"§........$%&/( _ )=?abc ABC§123' folgendes Ergebnis
'_§........_____b_B_23'
 
Zuletzt bearbeitet:
Ok, hat sich erledigt:

/[^\w_-]/i Erlaubt nur Buchstaben, Zahlen, Bindestriche und Unterstriche. Case-Insensitive.
 
Zurück