Slashes und andere Zeichen entfernen

redheador

Grünschnabel
Guten Morgen zusammen!


Ich kann mir vorstellen dass dieses thema evt. schon einmal hier dikutiert worden ist allerdings habe ich trotsdem nichts passendes gefunden.


Ich möchte nämlich einige Sonderzeichen durch ein _ ersetzen. Habe es schon mit str_replace, ereg_replace etc probiert allerdings ersetzt er komischer weise nicht alle!

Hier mal mein Code mit meinen Sonderzeichen!

PHP:
   $sonderzeichen=array('<','>',':','*','?','|','/',' ');
   $anzahl_sonder=count($sonderzeichen);

       for($i=0;$i<$anzahl_sonder;$i++){
           $dir_name=str_replace($sonderzeichen[$i], "_", $name);
       }

Es wird lediglich das Leerzeichen ersetzt!


Ich hoffe mir kann jemand weiterhelfen!
 
Wieso in for? str_replace nimmt auch arrays an

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

PHP:
   $sonderzeichen=array('<','>',':','*','?','|','/',' ');

   $dir_name=str_replace($sonderzeichen, "_", $name);
 
Das stimmt so nicht ganz. Das zu durchsuchende Objekt kann ein Array sein, nicht aber das Gesuchte und das, womit das gesuchte ersetzt werden soll. Siehe PHP-Manual. Deshalb würde ich hier auf array_map() zurückgreifen.
MfG, Andy
 
ups sorry mein fehler :D Dann eben so:

PHP:
$name = 'mike? daves< k >';

 $dir_name =preg_replace("/[\<\>\:\*\?\|\/\x20]/", "_", $name);
        
 echo $dir_name;
 
Zuletzt bearbeitet:
Wofür steht das rot markierte Pipe-Zeichen in dem Ausdruck? Es funktioniert ja auch ohne. ;)
preg_replace("/[\<|\>\:\*\?\|\/\x20]/", "_", $name);
 
Das stimmt so nicht ganz. Das zu durchsuchende Objekt kann ein Array sein, nicht aber das Gesuchte und das, womit das gesuchte ersetzt werden soll. Siehe PHP-Manual. Deshalb würde ich hier auf array_map() zurückgreifen.
MfG, Andy

Doch, das Beispiel von KD3 kann richtig sein.

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

$search, $replace und $subject können alle Arrays sein.
Natürlich darf $search auch ein Array sein und $replace ein String.
Umgekehrt, also $replace ist Array und $search ein String, würde es keinen wirklichen Sinn machen.
 
Zurück