如何在PHP中替换所有特殊字符,除了下划线和句点?

13

请问有人可以告诉我如何替换字符串中除了下划线和句号以外的所有特殊字符。此外,我一直在尝试理解如何使用替换模式,阅读了PHP手册,但对于像我这样的初学者来说非常困惑,是否有其他为初学者准备的文档或教程,这样我就不必每次想使用此函数时都要发布另一个问题并麻烦你们了吗?

preg_replace('/[^a-zA-Z0-9]/', '', $string);

我已经有一个代码,它可以替换所有特殊字符,但我希望保留_.


1
在这里阅读有关正则表达式的内容!(http://www.regular-expressions.info/) - Jørgen R
2个回答

33

_.放入否定字符集中([^...]):

$string = preg_replace('/[^a-zA-Z0-9_.]/', '', $string);

你不应该省略$string = ..,因为preg_replace函数会返回替换后的字符串。它不会直接改变原来的字符串。


2
@maniteja,提醒一下,上面的模式可以替换为/[^\w.]/,因为\w匹配任何单词字符(包括字母、数字、_)。 - falsetru
你如何在这里允许'/'字符? - Chris Schlitt
1
@ChrisSchlitt,使用正确的转义添加斜杠/'/[^a-zA-Z0-9_.\/]/'。或者使用另一个正则表达式分隔符(无需转义):'|[^a-zA-Z0-9_./]|' - falsetru
@ChrisSchlitt,如何替换除了,/之外的所有特殊字符。 - manas paul

1

你可以使用一些PHP筛选器小部件,如Purifier(设置输入白名单)...

但是,我们仍然建议您学习正则表达式!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接