Ce qui fonctionne, j'ai bien en sortie > Joyeux N[ô][ë]l
Donc ma classe fonctionne et repere les caracteres desires.
Mais je veux le code ascii de ce caractere, donc ord();
Mais la, la fonction me retourne toujours le meme code (92).
J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code
ascii dans le deuxieme cas alors que dans le premier, le caractere est
retourne correctement ?
Des idees ?
Merci d'avance !
David C u e l - O l l e r
V E N T I L O - s t u d i o
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
Thibaut Allender
Dco wrote:
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code ascii dans le deuxieme cas alors que dans le premier, le caractere est retourne correctement ?
parce qu'il execute d'abord le ord (sur 1 - qui n'est pas encore connu) et ensuite le replace, donc il remplace tout par la meme valeur ord("1")
essaye ceci :
<?php print ord("1"); ?>
--> 92
tu ne peux pas utiliser une fonction dans un replace, puisque la fonction fille sera toujours executee avant la fonction mere
a+
-- freelance + web design + php dev + digital photo + http://www.capsule.org
Dco wrote:
Mais la, la fonction me retourne toujours le meme code (92).
J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code
ascii dans le deuxieme cas alors que dans le premier, le caractere est
retourne correctement ?
parce qu'il execute d'abord le ord (sur \1 - qui n'est pas encore
connu) et ensuite le replace, donc il remplace tout par la meme valeur
ord("\1")
essaye ceci :
<?php
print ord("\1");
?>
--> 92
tu ne peux pas utiliser une fonction dans un replace, puisque la
fonction fille sera toujours executee avant la fonction mere
a+
--
freelance + web design + php dev + digital photo
+ http://www.capsule.org
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code ascii dans le deuxieme cas alors que dans le premier, le caractere est retourne correctement ?
parce qu'il execute d'abord le ord (sur 1 - qui n'est pas encore connu) et ensuite le replace, donc il remplace tout par la meme valeur ord("1")
essaye ceci :
<?php print ord("1"); ?>
--> 92
tu ne peux pas utiliser une fonction dans un replace, puisque la fonction fille sera toujours executee avant la fonction mere
a+
-- freelance + web design + php dev + digital photo + http://www.capsule.org
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code ascii dans le deuxieme cas alors que dans le premier, le caractere est retourne correctement ?
Des idees ?
92 = ord(''), interprété dans ta ligne $rep="[". ord("1") ."]";
Peut-être avec $toto = ereg_replace($reg,"[". ord("1") ."]",$ts); ?
Mais la, la fonction me retourne toujours le meme code (92).
J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code
ascii dans le deuxieme cas alors que dans le premier, le caractere est
retourne correctement ?
Des idees ?
92 = ord(''), interprété dans ta ligne $rep="[". ord("\1") ."]";
Peut-être avec
$toto = ereg_replace($reg,"[". ord("\1") ."]",$ts); ?
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code ascii dans le deuxieme cas alors que dans le premier, le caractere est retourne correctement ?
Des idees ?
92 = ord(''), interprété dans ta ligne $rep="[". ord("1") ."]";
Peut-être avec $toto = ereg_replace($reg,"[". ord("1") ."]",$ts); ?
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
92 est le code ascii du backslash ""
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code ascii dans le deuxieme cas alors que dans le premier, le caractere est retourne correctement ?
Des idees ?
peut-être en enlevant les guillemets à l'interieur de la fonction ord =>ord(1) mais je suis pas du tout sûr que ça marche.
Mais la, la fonction me retourne toujours le meme code (92).
J'ai donc en sortie > Joyeux N[92][92]l
92 est le code ascii du backslash ""
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code
ascii dans le deuxieme cas alors que dans le premier, le caractere est
retourne correctement ?
Des idees ?
peut-être en enlevant les guillemets à l'interieur de la fonction ord
=>ord(\1)
mais je suis pas du tout sûr que ça marche.
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
92 est le code ascii du backslash ""
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code ascii dans le deuxieme cas alors que dans le premier, le caractere est retourne correctement ?
Des idees ?
peut-être en enlevant les guillemets à l'interieur de la fonction ord =>ord(1) mais je suis pas du tout sûr que ça marche.
Merci d'avance ! si ça marche, je suis d'accord.
Christian
Olivier Miakinen
Je code donc ceci :
$ts="Joyeux Nôël"; $reg="[^a-zA-Z0-9_., ]";
Ok jusque ici.
$rep="[". ord("1") ."]";
Cette ligne est équivalente à : $rep="[92]"; (92 est le code du backslash)
$toto = ereg_replace($reg,$rep,$ts);
Ici, il est déjà trop tard. Ton $rep ne contient plus aucun 1.
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
Normal. Voir ci-dessus.
Comme ça, sans trop réfléchir, je ne vois pas de solution simple avec une regexp. Je pense que tu devras faire une boucle pour traiter les caractères un par un.
Je code donc ceci :
$ts="Joyeux Nôël";
$reg="[^a-zA-Z0-9_., ]";
Ok jusque ici.
$rep="[". ord("\1") ."]";
Cette ligne est équivalente à :
$rep="[92]";
(92 est le code du backslash)
$toto = ereg_replace($reg,$rep,$ts);
Ici, il est déjà trop tard. Ton $rep ne contient plus aucun 1.
Mais la, la fonction me retourne toujours le meme code (92).
J'ai donc en sortie > Joyeux N[92][92]l
Normal. Voir ci-dessus.
Comme ça, sans trop réfléchir, je ne vois pas de solution simple avec
une regexp. Je pense que tu devras faire une boucle pour traiter les
caractères un par un.
Cette ligne est équivalente à : $rep="[92]"; (92 est le code du backslash)
$toto = ereg_replace($reg,$rep,$ts);
Ici, il est déjà trop tard. Ton $rep ne contient plus aucun 1.
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
Normal. Voir ci-dessus.
Comme ça, sans trop réfléchir, je ne vois pas de solution simple avec une regexp. Je pense que tu devras faire une boucle pour traiter les caractères un par un.
Olivier Miakinen
Peut-être avec $toto = ereg_replace($reg,"[". ord("1") ."]",$ts); ?
Non, cela n'a aucune chance de marcher (idem pour la réponse de Christian).
Peut-être avec
$toto = ereg_replace($reg,"[". ord("\1") ."]",$ts); ?
Non, cela n'a aucune chance de marcher (idem pour la réponse de Christian).
Peut-être avec $toto = ereg_replace($reg,"[". ord("1") ."]",$ts); ?
Non, cela n'a aucune chance de marcher (idem pour la réponse de Christian).
tyoup
Dco wrote:
Bonjour,
Voila mon probleme.
Je desire convertir une string a la volee en filtrant les caracteres d'une classe determinee. Pour ce faire, j'utilise un ereg_replace(). ...
Ce qui fonctionne, j'ai bien en sortie > Joyeux N[ô][ë]l Donc ma classe fonctionne et repere les caracteres desires. Mais je veux le code ascii de ce caractere, donc ord(); ...
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code ascii dans le deuxieme cas alors que dans le premier, le caractere est retourne correctement ?
bon ... yen a qui croient encore au Père Noël ... ;-)
ça ne marche pas parceque $rep n'est pas "du code exécutable", c'est une chaîne de caractères fixée, ici elle vaut '[92]'.
en plus il n'y a pas de capture donc je ne vois pas quelle valeur on peut espérer pour 1 ...
Des idees ?
pour exécuter du code dans une expression régulière, on peut utiliser $toto = preg_replace('/([a-z...])/e','"[".ord($1)."]"',$ts);
Merci d'avance !
de rien
-- Tyoup
Dco wrote:
Bonjour,
Voila mon probleme.
Je desire convertir une string a la volee en filtrant
les caracteres d'une classe determinee. Pour ce faire, j'utilise un
ereg_replace().
...
Ce qui fonctionne, j'ai bien en sortie > Joyeux N[ô][ë]l
Donc ma classe fonctionne et repere les caracteres desires.
Mais je veux le code ascii de ce caractere, donc ord();
...
Mais la, la fonction me retourne toujours le meme code (92).
J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code
ascii dans le deuxieme cas alors que dans le premier, le caractere est
retourne correctement ?
bon ... yen a qui croient encore au Père Noël ... ;-)
ça ne marche pas parceque $rep n'est pas "du code exécutable", c'est une
chaîne de caractères fixée, ici elle vaut '[92]'.
en plus il n'y a pas de capture donc je ne vois pas quelle valeur on
peut espérer pour \1 ...
Des idees ?
pour exécuter du code dans une expression régulière, on peut utiliser
$toto = preg_replace('/([a-z...])/e','"[".ord($1)."]"',$ts);
Je desire convertir une string a la volee en filtrant les caracteres d'une classe determinee. Pour ce faire, j'utilise un ereg_replace(). ...
Ce qui fonctionne, j'ai bien en sortie > Joyeux N[ô][ë]l Donc ma classe fonctionne et repere les caracteres desires. Mais je veux le code ascii de ce caractere, donc ord(); ...
Mais la, la fonction me retourne toujours le meme code (92). J'ai donc en sortie > Joyeux N[92][92]l
Pourquoi ca marche pas ? Pourquoi la fonction me retourne le meme code ascii dans le deuxieme cas alors que dans le premier, le caractere est retourne correctement ?
bon ... yen a qui croient encore au Père Noël ... ;-)
ça ne marche pas parceque $rep n'est pas "du code exécutable", c'est une chaîne de caractères fixée, ici elle vaut '[92]'.
en plus il n'y a pas de capture donc je ne vois pas quelle valeur on peut espérer pour 1 ...
Des idees ?
pour exécuter du code dans une expression régulière, on peut utiliser $toto = preg_replace('/([a-z...])/e','"[".ord($1)."]"',$ts);
Merci d'avance !
de rien
-- Tyoup
poste
Dco wrote:
J'ai pige !
Mais il va me falloir en effet tester chaque caractere, ce que je voulais eviter... Je me tourne donc vers un in_array() contenant les caracteres a convertir.
Merci a tous !
David C u e l - O l l e r V E N T I L O - s t u d i o
Dco <poste@ventilo.net> wrote:
J'ai pige !
Mais il va me falloir en effet tester chaque caractere, ce que je
voulais eviter... Je me tourne donc vers un in_array() contenant les
caracteres a convertir.
Merci a tous !
David C u e l - O l l e r
V E N T I L O - s t u d i o
Mais il va me falloir en effet tester chaque caractere, ce que je voulais eviter... Je me tourne donc vers un in_array() contenant les caracteres a convertir.
Merci a tous !
David C u e l - O l l e r V E N T I L O - s t u d i o
P'tit Marcel
Dco écrivit:
Mais il va me falloir en effet tester chaque caractere, ce que je voulais eviter...
non, il y a une solution simple en employant les regex :