从php中的特定模式中删除不允许的字符

时间:2010-09-22 08:06:34

标签: php string pattern-matching

我有一个文本字段,用户可以在其中输入他/她想要的任何字符。但是在服务器中我有一个字符串模式[a-z0-9] [a-z0-9 + .-] *,如果文本框中值中的任何字符与模式不匹配,那么我必须删除来自该字符串的那个字符。我怎么能在PHP中这样做。那有什么功能吗?

提前致谢。 Gowri Sankar

5 个答案:

答案 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);