transformer un antislash en slash avec preg_replace
3 réponses
Nicolas ROBERT
bonjour,
je n'ai jamais utilisé cette fonction preg_replace().
Je souhaite écrire une fonction qui tranforme une chaine contenant des
antislash en une chaine contenant des slash.
j'ai essayé le découpage de ma chaine avec explode, puis la concaténation
de mes sous-chaines avec des slash, mais cette solution ne marche pas très
bien (ex: le cas "blabla\truc" genere une erreur car \t est considéré comme
un caractère spécial).
je voudrais écrire quelque-chose de plus simple, ressemblant à ceci:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
je n'ai jamais utilisé cette fonction preg_replace(). Je souhaite écrire une fonction qui tranforme une chaine contenant des antislash en une chaine contenant des slash.
Il ne faut *surtout* pas aller chercher les expressions rationnelles pour un remplacement aussi simple ! C'est prendre un marteau pilon pour écraser une mouche.
je voudrais écrire quelque-chose de plus simple, ressemblant à ceci:
function backtoslash($chaine){ $out=preg_replace("/ / "," / ",$chaine); return $out; }
Pour remplacer une chaîne fixe par une autre chaîne fixe, tu as str_replace() : http://fr2.php.net/manual/fr/function.str-replace.php $out = str_replace('', '/', $chaine);
Mais pour un simple caractère, il y a encore plus simple : http://fr2.php.net/manual/fr/function.strtr.php $out = strtr($chaine, '', '/');
Tant que tu y es, jette donc un coup d'½il à toutes les fonctions de manipulation de chaînes de caractères. Ça ne peut pas faire de mal d'avoir lu au moins une fois une description de chaque fonction, pour savoir qu'elle existe le jour où tu en auras besoin. http://fr2.php.net/manual/fr/ref.strings.php
je n'ai jamais utilisé cette fonction preg_replace().
Je souhaite écrire une fonction qui tranforme une chaine contenant des
antislash en une chaine contenant des slash.
Il ne faut *surtout* pas aller chercher les expressions rationnelles
pour un remplacement aussi simple ! C'est prendre un marteau pilon pour
écraser une mouche.
je voudrais écrire quelque-chose de plus simple, ressemblant à ceci:
Pour remplacer une chaîne fixe par une autre chaîne fixe, tu as
str_replace() :
http://fr2.php.net/manual/fr/function.str-replace.php
$out = str_replace('\', '/', $chaine);
Mais pour un simple caractère, il y a encore plus simple :
http://fr2.php.net/manual/fr/function.strtr.php
$out = strtr($chaine, '\', '/');
Tant que tu y es, jette donc un coup d'½il à toutes les fonctions de
manipulation de chaînes de caractères. Ça ne peut pas faire de mal
d'avoir lu au moins une fois une description de chaque fonction, pour
savoir qu'elle existe le jour où tu en auras besoin.
http://fr2.php.net/manual/fr/ref.strings.php
je n'ai jamais utilisé cette fonction preg_replace(). Je souhaite écrire une fonction qui tranforme une chaine contenant des antislash en une chaine contenant des slash.
Il ne faut *surtout* pas aller chercher les expressions rationnelles pour un remplacement aussi simple ! C'est prendre un marteau pilon pour écraser une mouche.
je voudrais écrire quelque-chose de plus simple, ressemblant à ceci:
function backtoslash($chaine){ $out=preg_replace("/ / "," / ",$chaine); return $out; }
Pour remplacer une chaîne fixe par une autre chaîne fixe, tu as str_replace() : http://fr2.php.net/manual/fr/function.str-replace.php $out = str_replace('', '/', $chaine);
Mais pour un simple caractère, il y a encore plus simple : http://fr2.php.net/manual/fr/function.strtr.php $out = strtr($chaine, '', '/');
Tant que tu y es, jette donc un coup d'½il à toutes les fonctions de manipulation de chaînes de caractères. Ça ne peut pas faire de mal d'avoir lu au moins une fois une description de chaque fonction, pour savoir qu'elle existe le jour où tu en auras besoin. http://fr2.php.net/manual/fr/ref.strings.php
Nicolas ROBERT
bonjour,
J'ai trouvé une petite parade permettant de contourner le problème des caractères spéciaux. Ce n'est pas parfait mais ça a le mérite de fonctionner.
<? function backtoslash($chaine){ $masque=array(chr(9),chr(10),chr(13)); // tableau des caractères spéciaux: t , n , r $remplace=array('/t','/n','/r'); //tableau de remplacement
$out=str_replace($masque,$remplace,$chaine); //on remplace les caractères spéciaux $out=str_replace("","/",$out); // on remplace les backslash simples
return $out; } ?>
Je me permet de rajouter un lien vers une page pouvant servir à la communauté de développeurs, contenant un tableau des codes ascii et hexa des caractères: http://www.asciitable.com/
Si quelqu'un souhaite poser un laïus particulier ou une autre solution, je suis à l'écoute...
Cordialement.
bonjour,
J'ai trouvé une petite parade permettant de contourner le problème des
caractères spéciaux. Ce n'est pas parfait mais ça a le mérite de
fonctionner.
<?
function backtoslash($chaine){
$masque=array(chr(9),chr(10),chr(13)); // tableau des caractères
spéciaux: t , n , r
$remplace=array('/t','/n','/r'); //tableau de remplacement
$out=str_replace($masque,$remplace,$chaine); //on remplace les
caractères spéciaux
$out=str_replace("\","/",$out); // on remplace les backslash simples
return $out;
}
?>
Je me permet de rajouter un lien vers une page pouvant servir à la
communauté de développeurs, contenant un tableau des codes ascii et hexa des
caractères:
http://www.asciitable.com/
Si quelqu'un souhaite poser un laïus particulier ou une autre solution, je
suis à l'écoute...
J'ai trouvé une petite parade permettant de contourner le problème des caractères spéciaux. Ce n'est pas parfait mais ça a le mérite de fonctionner.
<? function backtoslash($chaine){ $masque=array(chr(9),chr(10),chr(13)); // tableau des caractères spéciaux: t , n , r $remplace=array('/t','/n','/r'); //tableau de remplacement
$out=str_replace($masque,$remplace,$chaine); //on remplace les caractères spéciaux $out=str_replace("","/",$out); // on remplace les backslash simples
return $out; } ?>
Je me permet de rajouter un lien vers une page pouvant servir à la communauté de développeurs, contenant un tableau des codes ascii et hexa des caractères: http://www.asciitable.com/
Si quelqu'un souhaite poser un laïus particulier ou une autre solution, je suis à l'écoute...
Cordialement.
Nicolas ROBERT
je n'ai jamais utilisé cette fonction preg_replace(). Je souhaite écrire une fonction qui tranforme une chaine contenant des antislash en une chaine contenant des slash.
Il ne faut *surtout* pas aller chercher les expressions rationnelles pour un remplacement aussi simple ! C'est prendre un marteau pilon pour écraser une mouche.
Ce n'est pas la question. En l'occurence aucune des Deux solutions que tu proposes ne marchent. et tu vas voir pourquoi.
je voudrais écrire quelque-chose de plus simple, ressemblant à ceci:
function backtoslash($chaine){ $out=preg_replace("/ / "," / ",$chaine); return $out; }
Pour remplacer une chaîne fixe par une autre chaîne fixe, tu as str_replace() : http://fr2.php.net/manual/fr/function.str-replace.php $out = str_replace('', '/', $chaine);
testons la fonction avec la chaine "C:Program Filesmon Programmetoto.txt" Ô surprise, nous obtenons C:/Program Files/mon Programme oto.txt.
eh oui, le t est fait bien partie des caractères spéciaux, et donc str_replace ne le reconnaît pas
Mais pour un simple caractère, il y a encore plus simple : http://fr2.php.net/manual/fr/function.strtr.php $out = strtr($chaine, '', '/');
En l'occurence, comme je l'ai dit sur mon premier fil, ma chaine contient plusieurs
Tant que tu y es, jette donc un coup d'½il à toutes les fonctions de manipulation de chaînes de caractères. Ça ne peut pas faire de mal d'avoir lu au moins une fois une description de chaque fonction, pour savoir qu'elle existe le jour où tu en auras besoin. http://fr2.php.net/manual/fr/ref.strings.php
Je les ai lu de nombreuses fois rassure-toi. Je cherche toujours le masque qui irait bien.
cordialement.
je n'ai jamais utilisé cette fonction preg_replace().
Je souhaite écrire une fonction qui tranforme une chaine contenant des
antislash en une chaine contenant des slash.
Il ne faut *surtout* pas aller chercher les expressions rationnelles
pour un remplacement aussi simple ! C'est prendre un marteau pilon pour
écraser une mouche.
Ce n'est pas la question. En l'occurence aucune des Deux solutions que tu
proposes ne marchent.
et tu vas voir pourquoi.
je voudrais écrire quelque-chose de plus simple, ressemblant à ceci:
Pour remplacer une chaîne fixe par une autre chaîne fixe, tu as
str_replace() :
http://fr2.php.net/manual/fr/function.str-replace.php
$out = str_replace('\', '/', $chaine);
testons la fonction avec la chaine "C:Program Filesmon Programmetoto.txt"
Ô surprise, nous obtenons C:/Program Files/mon Programme oto.txt.
eh oui, le t est fait bien partie des caractères spéciaux, et donc
str_replace ne le reconnaît pas
Mais pour un simple caractère, il y a encore plus simple :
http://fr2.php.net/manual/fr/function.strtr.php
$out = strtr($chaine, '\', '/');
En l'occurence, comme je l'ai dit sur mon premier fil, ma chaine contient
plusieurs
Tant que tu y es, jette donc un coup d'½il à toutes les fonctions de
manipulation de chaînes de caractères. Ça ne peut pas faire de mal
d'avoir lu au moins une fois une description de chaque fonction, pour
savoir qu'elle existe le jour où tu en auras besoin.
http://fr2.php.net/manual/fr/ref.strings.php
Je les ai lu de nombreuses fois rassure-toi.
Je cherche toujours le masque qui irait bien.
je n'ai jamais utilisé cette fonction preg_replace(). Je souhaite écrire une fonction qui tranforme une chaine contenant des antislash en une chaine contenant des slash.
Il ne faut *surtout* pas aller chercher les expressions rationnelles pour un remplacement aussi simple ! C'est prendre un marteau pilon pour écraser une mouche.
Ce n'est pas la question. En l'occurence aucune des Deux solutions que tu proposes ne marchent. et tu vas voir pourquoi.
je voudrais écrire quelque-chose de plus simple, ressemblant à ceci:
function backtoslash($chaine){ $out=preg_replace("/ / "," / ",$chaine); return $out; }
Pour remplacer une chaîne fixe par une autre chaîne fixe, tu as str_replace() : http://fr2.php.net/manual/fr/function.str-replace.php $out = str_replace('', '/', $chaine);
testons la fonction avec la chaine "C:Program Filesmon Programmetoto.txt" Ô surprise, nous obtenons C:/Program Files/mon Programme oto.txt.
eh oui, le t est fait bien partie des caractères spéciaux, et donc str_replace ne le reconnaît pas
Mais pour un simple caractère, il y a encore plus simple : http://fr2.php.net/manual/fr/function.strtr.php $out = strtr($chaine, '', '/');
En l'occurence, comme je l'ai dit sur mon premier fil, ma chaine contient plusieurs
Tant que tu y es, jette donc un coup d'½il à toutes les fonctions de manipulation de chaînes de caractères. Ça ne peut pas faire de mal d'avoir lu au moins une fois une description de chaque fonction, pour savoir qu'elle existe le jour où tu en auras besoin. http://fr2.php.net/manual/fr/ref.strings.php
Je les ai lu de nombreuses fois rassure-toi. Je cherche toujours le masque qui irait bien.