【发布时间】:2013-01-14 02:49:48
【问题描述】:
我想要做的是清理一个字符串(html 标签、额外的空格、引号......),但我想承认拉丁字符,如标点符号和ñ 字符。我试过这个,但我不知道为什么没有按预期工作:
代码
//Removing special characters
$str = preg_replace('/[^;\sa-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ]+/', '', $str);
//Deleting extra white spaces
$str = preg_replace('/\s+/', ' ', $str);
示例
in: Película; Films; @Cine; Añoranza; <html></body>foo "bar ";
out: pelcula; Films; Cine; Aoranza; foo bar
expected: Película; Films; Cine; Añoranza; foo bar
问题:
我的代码有什么问题,我该如何解决?因为拉丁字符部分是唯一对表达式不起作用的部分。
另外:如何将两个正则表达式合并为一个?
【问题讨论】:
-
试过
'/[^;\sa-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ]+/u'?此外,刚刚经过测试,您的正则表达式会将<html></body>替换为htmlbody,而不是您声称的输出。 -
mmm...我认为问题是Laravel框架或数据库
-
看看这个fiddle。
-
正在php控制台上工作,但不在php文件o.O中
-
那么你的文件可能不是UTF-8。尝试遵循@Esailija 的指示,看看是否有帮助。
标签: php regex character-encoding preg-replace