我有一个文本字段,用户可以在其中输入他/她想要的任何字符。但是在服务器中我有一个字符串模式[a-z0-9] [a-z0-9 + .-] *,如果文本框中值中的任何字符与模式不匹配,那么我必须删除来自该字符串的那个字符。我怎么能在PHP中这样做。那有什么功能吗?
提前致谢。 Gowri Sankar
答案 0 :(得分:4)
..在PHP中我们使用带有preg_replace的常规表达式。 在这里你有一些例子的帮助...... http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/
这就是你需要的:
$ new_text = preg_replace('#[^ A-Za-z + .- 0-9] #s','',$ text);
答案 1 :(得分:3)
只使用preg_replace
,允许的模式被否定。
例如,如果你允许a到Z和空格,你只需通过在字符类中添加^
来否定它:
echo preg_replace('/[^a-z ]*/i', '', 'This is a String !!!');
上面会输出:这是一个字符串(没有感叹号) 所以它删除任何不是Z或空格的字符,例如你的模式否定了。
答案 2 :(得分:1)
怎么样:
$ string ='快速测试& *(^& for this this should working';
$ searchForThis ='/ [^ A-Za-z \ s] /';
$ replaceWithBlank ='';
echo preg_replace($ searchForThis,$ replaceWithBlank,$ string);
答案 3 :(得分:1)
试试这个:
$strs = array('+abc123','+.+abc+123','abc&+123','#(&)');
foreach($strs as $str) {
$str = preg_replace('/(^[^a-z0-9]*)|([^a-z0-9+.-]*)/', '', $str);
echo "'",$str,"'\n";
}
输出:
'abc123'
'abc+123'
'abc+123'
''
答案 4 :(得分:-1)
str_replace('x','',$text);