Supprimez les caractères suivants ½ ´ ¤ £ € ¨ en utilisant php mais sans utiliser les fonctions preg_replace ou str_replace
P粉163465905
P粉163465905 2023-09-12 20:08:13
0
1
528

J'ai un problème à résoudre. Je ne peux pas utiliser preg_replace 或 str_replace car nous ne pouvons pas prédéterminer les caractères puisque les données proviennent de la saisie d'un formulaire.

J'ai essayé de supprimer ces caractères de ceci $name "Test ½ ´ ¤ £ € ¨" ½ ´ ¤ £ € ¨;

Il en va de même pour le front-end, les caractères ne peuvent pas être prédéterminés

J'ai essayé les méthodes ci-dessous mais aucune n'a fonctionné

$name = "Test ½ ´ ¤ £ € ¨";

mb_convert_encoding(strval($name);

utf8_decode(strval($name);

Mon résultat idéal est Test

P粉163465905
P粉163465905

répondre à tous(1)
P粉731861241

Vous pouvez toujours parcourir les caractères d'une chaîne. Mais attention : PHP ne supporte pas nativement Unicode.

$remove = array( '½', '´', '¤', '£', '€' );
$result = '';
$name = "Test ½ ´ ¤ £ € ¨";

$count = mb_strlen($name, 'UTF-8');
for( $i = 0; $i < $count; $i++ ){
    $char = mb_substr( $name, $i, 1, 'UTF-8' );
    if( ! in_array( $char, $remove ) {
      $result .= $char;
    }
}

Cela parcourt les caractères multi-octets dans une chaîne fournie par l'utilisateur et vous permet d'en faire ce que vous voulez. L'exemple construit une chaîne résultante, en omettant les caractères que vous avez mentionnés. (Pas débogué, désolé.)

(À mon humble avis, je pense que vos raisons pour éviter les fonctions de remplacement de chaîne sont probablement fausses. L'avantage de l'utilisation de classes de caractères regex est le suivant : les auteurs de regex ont résolu de nombreux cas étranges dans lesquels Unicode inclut de nombreuses situations qui mettent les gens mal à l'aise)

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal