代码之家  ›  专栏  ›  技术社区  ›  lovespring

如何使regex删除所有特殊字符(?.=+,等等),但应允许中文/日文/韩文字符

  •  1
  • lovespring  · 技术社区  · 16 年前

    中文/日本/韩文字符为双字节或Unicode。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Amarghosh    16 年前

    以下regex应该有效; \p{P} 匹配标点和 \p{S} matches symbols .

    preg_replace("/\p{P}|\p{S}/u", "", $s);
    

    我无法测试它,因为我的PCRE不支持 \p , \x 等等,我得到了错误:

    PHP警告: preg_replace() :编译失败:支持 \P , P \X 尚未在第3行test.php中的偏移量1处编译

    如果出现此错误,则此页 describes a fix

        2
  •  1
  •   Michael Borgwardt    16 年前

    这个 mb_ereg 函数实现多字节感知的正则表达式。但是,您确实需要更准确地指定“特殊字符”的含义。

    编辑: 我想你需要的是 Unicode character classes PCRE支持,但我不确定mb-ereg函数是否支持这些功能,或者preg函数是否使用多字节字符串。

    推荐文章