首頁  >  問答  >  主體

使用php移除以下字元 ½ ´ ¤ £ € ¨,但不使用preg_replace或str_replace函數

我有一個問題要解決。我無法使用 preg_replace 或 str_replace,因為我們無法預先確定字符,因為資料來自表單輸入。

我試著從這個 $name "Test ½ ´ ¤ £ € ¨" 中刪除這些字元 ½ ´ ¤ £ € ¨#;

對於前端也是一樣,無法預先決定字元

我嘗試了下面的方法,但它們都不起作用

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

mb_convert_encoding(strval($name);

utf8_decode(strval($name);

我的理想輸出是 Test

P粉163465905P粉163465905426 天前523

全部回覆(1)我來回復

  • 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包含了令人不安的許多情況。)

    回覆
    0
  • 取消回覆