Maison  >  Questions et réponses  >  le corps du texte

Supprimez les caractères suivants ½ ´ ¤ £ € ¨ en utilisant php mais sans utiliser les fonctions preg_replace ou str_replace

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粉163465905P粉163465905426 Il y a quelques jours524

répondre à tous(1)je répondrai

  • P粉731861241

    P粉7318612412023-09-13 15:38:26

    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)

    .

    répondre
    0
  • Annulerrépondre