use*_*089 29 php regex string preg-replace
删除特殊字符时遇到问题.我想删除除"()/.% - &"之外的所有特殊字符,因为我将该字符串设置为标题.
我编辑了原始代码(见下图):
preg_replace('/[^a-zA-Z0-9_ -%][().][\/]/s', '', $String);
Run Code Online (Sandbox Code Playgroud)
但这并不是要删除特殊字符,例如:"â€","â€",","等等.
原始代码:(这有效但删除了这些字符:"()/.% - &")
preg_replace('/[^a-zA-Z0-9_ -]/s', '', $String);
Run Code Online (Sandbox Code Playgroud)
Luk*_*ger 52
您的点匹配所有字符.逃避它(以及其他特殊字符),如下所示:
preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $String);
Run Code Online (Sandbox Code Playgroud)
你希望海峡更换,因为性能方面它是多便宜,仍然适合您的需要!
$title = str_replace( array( '\'', '"', ',' , ';', '<', '>' ), ' ', $rawtitle);
Run Code Online (Sandbox Code Playgroud)
(除非这完全是关于安全性和 sql 注入,在这种情况下,我宁愿使用 ALLOWED 字符的 POSITIVE 列表......更好的是,坚持使用经过测试的、经过验证的例程。)
顺便说一句,由于 OP 谈到了标题设置:我不会用任何东西替换特殊字符,而是用空格替换。一个肤浅的空间比两个词粘在一起更不是问题......
不错的尝试!我想你只需做一些小改动:
[和])(也用[和表示])\)本身-特殊的怪癖:如果它在两个字符之间,则表示范围,但如果它在开头或结尾,则表示字面-字符.你会想要这样的东西:
preg_replace('/[^a-zA-Z0-9_%\[().\]\\/-]/s', '', $String);
Run Code Online (Sandbox Code Playgroud)
如果您想进一步阅读本主题,请参阅http://docs.activestate.com/activeperl/5.10/lib/pods/perlrecharclass.html#special_characters_inside_a_bracketed_character_class.
| 归档时间: |
|
| 查看次数: |
153727 次 |
| 最近记录: |