【发布时间】:2011-11-08 10:53:24
【问题描述】:
是否有一种简单的方法可以从 PHP 中的字符串中删除所有非字母数字字符,而无需在正则表达式函数中单独列出它们?
我过去一直使用preg_replace("/[^a-zA-Z0-9\s\'\-]/", "", $my_string);,但这会过滤掉ÀÈÌÒÙß等重要字符。
我需要清理名称字段,因此不需要货币和数学字符/符号。
【问题讨论】:
-
是什么让您列出的那些字符很重要但
Þ不重要? (例如)或一大堆其他人。如果您要允许使用 Mu,为什么不使用 Pi 或其他希腊字母?如果允许日元,为什么不允许英镑和美元?我想问题是你在哪里画线 - 你想排除哪些字符,为什么?那些不适用于µ的字符有什么特别之处? -
从技术上讲,有一些代码点具有
\p{alphabetic}属性,既不是\pL也不是\pN,大多数人都满足于将[\pL\pN]用于字母数字,尤其是自从PHP似乎不支持 UTS#18 RL1.2 在兼容性属性上所需的\p{alphabetic}属性。 -
你是对的@Spudley。我修改了问题以澄清,因为在清理名称字段时允许使用数学或货币符号是没有意义的。