我尝试使用以下两行:
preg_replace("/[^A-Za-z0-9 ]/", '', $string);
preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
但是,如果$string
有一个引号,则会被"039"
替换,我不明白为什么:
不
变为
don039t
答案 0 :(得分:2)
In do not使用'
代替单引号。在html视图中,它显示为单个代码。替换(preg_replace)时,空格字符将被删除, 039 (来自'
)仅保留。
答案 1 :(得分:2)
如前所述,您的字符串使用htmlentities
进行编码。
尝试:
preg_replace("/[^A-Za-z0-9 ]/", '', html_entity_decode($string, ENT_QUOTES));
请参阅this example
指定ENT_QUOTES
以使其处理引号。
如果您仍在寻找删除字符的方法,而无需解码实体,则可以尝试
preg_replace("/[^a-z0-9& ]|&(#[0-9]{2,3})?/i", '', $string);
答案 2 :(得分:0)
尝试:
$exampleString = "Hi! Jo libertaire. This is working fine \"Yes absolutely fine\".Don't say its not working. you can try this string. :)";
$result= preg_replace("/[^A-Za-z0-9 ]/", '', $exampleString);
print $result;
我没有php的服务器,所以我在在线编辑器中尝试了这个,它工作正常。