remplacer un caratère dans une variable selon son code ASCII

funzyrip
Invité n'ayant pas de compte PHPfrance

14 févr. 2006, 10:37

Bonjour à tous,
je cherche a tester les caractères d'une variable selon leur code ASCII et remplacer si besoin un ou des caractères de cette variable.
voila le topo:
$rep=dfkgdkgbvdkj@feriguhj;
$len = strlen($rep);
for($a=0; $a<$len; $a++){
  $p = ord($rep[$a]);
  if ($p=195) {
      $rep = substr_replace($rep,'',$a,$len-$a);
  } elseif ($p=169) {
      $rep = substr_replace($rep,'é',$a,$a+1);
  } elseif ($p=169) {
      $rep = substr_replace($rep,'è',$a,$a+1);
  } elseif ($p=162) {
      $rep = substr_replace($rep,'ç',$a,$a+1);
  } else {
      $rep=$rep;
  }
}
echo "<br>$rep"; 
bien sur ce que je viens d'afficher ne fonctionne pas... mais je vois pas comment faire pour changer ma variable $rep si un des caractères a telle valeur de code ASCII.

Auriez vous une idée? merci de vos réponses je continu de chercher

Mammouth du PHP | 684 Messages

14 févr. 2006, 11:31

salut,

Il est peut etre plus utile de faire des if avec l'operateur d'egalite.
$rep = dfkgdkgbvdkj@feriguhj;
$len = strlen($rep);
for($a = 0; $a < $len; $a++){
  $p = ord($rep[$a]);
  if ($p == 195) {
      $rep = substr_replace($rep, '', $a, $len - $a);
  } else if ($p == 169) {
      $rep = substr_replace($rep, 'é', $a, $a + 1);
  } else if ($p == 169) {
      $rep = substr_replace($rep, 'è', $a, $a + 1);
  } else if ($p == 162) {
      $rep = substr_replace($rep, 'ç', $a, $a + 1);
  } else {
      $rep = $rep;
  }
}
echo "<br>$rep"; 
Pourquoi ne pas utiliser str_replace ?
Zigz4g

funzyrip
Invité n'ayant pas de compte PHPfrance

14 févr. 2006, 12:17

merci pour ta réponse! c'est vrai que == ca marche mieux!

sinon je n'utilise pas str_replace parceque je ne peux pas faire les caractères à remplacer sur mon clavier...
a moins de pouvoir faire

str_replace = ('Ã?','è',$rep)
ou le ? représente quelque chose de variable, en effet dans ma variable $rep, j'ai souvent des Ãquelquechose, et je voudrais remplacer ces 2 caractères par autre chose??

merci de pour votre aide

Mammouth du PHP | 684 Messages

14 févr. 2006, 12:41

Et avec cette fonction ???
$mavar = strtr($mavar,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
Zigz4g

funzyrip
Invité n'ayant pas de compte PHPfrance

14 févr. 2006, 14:47

merci zigz4g mais je ne peux pas avec strtr parceque je ne peux pas faire les caractères à changer. c'est du style é , ou â è

mais ceci a l'air de marcher
$len = strlen($rep); 
for($a=0; $a<$len; $a++){ 
$p = ord($rep[$a]);
echo "<br>$p";
if ($p == 195) { 
$rep = substr_replace($rep,' ',$a,-($len-$a));
} elseif ($p == 169) { 
$rep = substr_replace($rep,'é',$a,-($len-$a));
} elseif ($p == 168) { 
$rep = substr_replace($rep,'è',$a,-($len-$a));
} elseif ($p == 162) { 
$rep = substr_replace($rep,'â',$a,-($len-$a));
}
}
echo "<br>$rep";
le seul problème vient du fait qu'il y a un espace vide apres le 1er if, il faut que je trouve une solution pour virer un espace au milieu de ma chaine $rep