Heim  >  Fragen und Antworten  >  Hauptteil

Entfernen Sie die folgenden Zeichen ½ ´ ¤ £ € ¨ mit PHP, aber ohne die Funktionen preg_replace oder str_replace

Ich muss ein Problem lösen. Ich kann preg_replace 或 str_replace nicht verwenden, da wir die Zeichen nicht vorbestimmen können, da die Daten aus der Formulareingabe stammen.

Ich habe versucht, diese Zeichen daraus zu entfernen $name "Test ½ ´ ¤ £ € ¨" ½ ´ ¤ £ € ¨;

Das Gleiche gilt für das Frontend, die Charaktere können nicht vorherbestimmt werden

Ich habe die folgenden Methoden ausprobiert, aber keine davon hat funktioniert

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

mb_convert_encoding(strval($name);

utf8_decode(strval($name);

Meine ideale Ausgabe ist Test

P粉163465905P粉163465905376 Tage vor487

Antworte allen(1)Ich werde antworten

  • P粉731861241

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

    您可以始终遍历字符串中的字符。但要小心:php不是原生支持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;
        }
    }
    

    这会遍历用户提供的字符串中的多字节字符,并允许您对它们进行任何操作。该示例构建了一个结果字符串,省略了您提到的字符。(未调试,抱歉。)

    (恕我直言,我认为您避免使用字符串替换函数的理由可能是错误的。使用正则表达式字符类的好处在于:正则表达式作者已经解决了许多奇怪的边缘情况,其中Unicode包含了令人不安的许多情况。)

    Antwort
    0
  • StornierenAntwort