【问题标题】:Remove Non English Characters PHP删除非英文字符 PHP
【发布时间】:2011-04-08 23:11:31
【问题描述】:

如何解析字符串以删除 php 中的所有非英文字符

现在我想删除类似的东西

სოფონი�

谢谢:)

【问题讨论】:

  • 我假设您的意思是非拉丁/罗马字母字符。
  • 是的,对不起,我就是这个意思

标签: php character


【解决方案1】:
$str = preg_replace('/[^\00-\255]+/u', '', $str);

【讨论】:

  • 八进制 0 到 255,所以十进制 0 到 173?
  • 十进制 0 到 255。所有 256 个 ASCII。
【解决方案2】:

您最好的选择是使用iconv,它将字符串转换为请求的字符编码。

iconv('UTF-8', 'ASCII//TRANSLIT',  $yourtext);

使用//translit,您可以获得到 ASCII 的有意义的转换(例如 ß -> ss)。使用 //IGNORE 将完全去除非 ascii 字符。

iconv('UTF-8', 'ASCII//IGNORE',  $yourtext);

见http://php.net/manual/en/function.iconv.php

【讨论】:

    【解决方案3】:

    通过使用preg_replace()

    $string = "some სოფო text"; 
    $string = preg_replace('/[^a-z0-9_ ]/i', '', $string); 
    
    echo $string;
    

    当然,您需要扩展preg_replace 模式,但这是一种方法。可能有更好的方法,我只是不知道。

    【讨论】:

      【解决方案4】:

      使用此代码:

      $illegalChars = array("",); 
      $string  = str_replace($illegalChars,"",$string );
      echo $string;
      

      【讨论】:

      • 您需要与每个非英语字符进行比较
      • 我倾向于使用“白名单”方法而不是“黑名单”方法。也就是说,我会让例程识别应该保留的字符,那些ARE“英文字符”的字符并消除其余字符,而不是尝试识别应该删除的字符。跨度>
      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 2020-04-14
      • 1970-01-01
      相关资源
      最近更新 更多