<?php $s_var = 'Un "_65_" comme Arthur.'; echo preg_replace("/_(\d{1,3})_/", 'A', $s_var); // Affiche Un "A" comme Arthur.
$s_var = 'Arthur a "_A_" ans.'; echo preg_replace("/_(\w{1})_/", '65', $s_var); // Affiche, Arthur a "65" ans.
$a_ascii = array( '_65_' => 'A', '_66_' => 'B', '_67_' => 'C' // etc... ); $s_txt = 'Un "_65_" comme Arthur ou un "_67_" comme Célia.'; echo strtr($s_txt, $a_ascii); // Affiche, Un "A" comme Arthur ou un "C" comme Célia.
preg_replace("/_(\d{1,3})_/","$1", $variable)
preg_replace("/_(\d{1,3})_/",intval("$1"), $variable)
preg_replace("/_(\d{1,3})_/",chr("$1"), $variable)
intval("$1")ou
chr("$1")ce qui me vient à l'esprit c'est que tu envoie littéralement "$1" à ces 2 fonctions. Et donc logiquement "$1" ne se converti ni en int ni en char.
Pour i allant de 65 à 90
{
patterns[i-65] = "/_" & i & "_/"
remplacement[i-65] = chr(i)
}
<?php function callbackFunction( $matches) { return chr((int)$matches[1]); } $pattern = '/_(\\d{1,3})_/'; $subject = 'Un _65_ comme Arthur ou un _67_ comme Célia.'; print_r( preg_replace_callback($pattern, 'callbackFunction', $subject, -1 ) ); ?>