【问题标题】:how to remove special chars like this █ from string in php如何从php中的字符串中删除像这样的特殊字符█
【发布时间】:2015-06-02 10:54:07
【问题描述】:

如何从 php 中的字符串中仅删除这种类型的特殊字符 ░▒▓█► 我用这个preg_replace('/[\x00-\x1F\x80-\xC0]/u', '',$string);

但我想允许法语语言的特殊字符,如 à,â, ', "

【问题讨论】:

  • 您要保留哪些字符? (这种方式可能更简单。)
  • 我想保留法语特殊字符:’, ‘,“, ”, «,», ‹, ›, —, æ, œ, €, ., ', ",@,À,Á,Â,Ã,Ä,Å,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ò,Ó,Ô,Õ,Ö,Ù,Ú,Û,Ü,Ý,à,á,â,ã,ä,å,ç,è,é,ê,ë,ì,í,î,ï,ð,ò,ó,ô,õ,ö,ù,ú,û,ü,ý,ÿ
  • 所以不允许空格和数字,也不允许? ! : ; -?你要准确(但不用一个个写字,只描述字类)
  • 是的,允许空格、数字、分号,用于清理伪艺术作者▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ ►►► Lorem ipsum ►►►提交的内容

标签: php preg-replace special-characters


【解决方案1】:

您可以使用 unicode 字符类,例如 \p{Latin} 用于拉丁文字,\p{Sc} 用于货币,\p{P}(或更短的\pP)用于标点符号:

$str = preg_replace('/[^0-9\p{Latin}\pP\p{Sc}@\s]+/u', '', $str);

您可以在 PCRE here 中找到不同的 unicode 字符类。 (搜索句子:“支持以下通用类别属性代码”

【讨论】:

    【解决方案2】:

    因此,您想要使用 UTF-8 的代码点,但您想要使用 ISO 8859-15 的字符编码方案。我认为您可以将字符串转换两次:

    $text = iconv("ISO-8859-15", "UTF-8", iconv("UTF-8", "ISO-8859-15//IGNORE", $text));
    echo $text;
    

    【讨论】:

      猜你喜欢
      • 2012-05-30
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2016-01-23
      相关资源
      最近更新 更多