如果字符串包含任何非字母数字字符或空格,我正在寻找一个php preg替换为null / empty字符串
e.g。字符串
$string = "This string is ok";
$string = "Thi$ string is NOT ok, and should be emptied"
当我说清空/无效时,我的意思是它会使字符串“”。
基本上任何东西a-z A-Z 0-9或空格都可以
有什么想法吗?
答案 0 :(得分:3)
if(preg_match('~[^a-z0-9 ]~i', $str))
$str = '';
答案 1 :(得分:2)
您可以使用此模式(请注意占有量词)来匹配“无效”字符串:
^[a-zA-Z0-9 ]*+.+$
这是一个片段:
<?php
$test = array(
"This string is ok",
"Thi$ string is NOT ok, and should be emptied",
"No way!!!",
"YES YES YES"
);
foreach ($test as $str) {
echo preg_replace('/^[a-zA-Z0-9 ]*+.+$/', '<censored!>', $str)."\n";
}
?>
以上打印(as seen on ideone.com):
This string is ok
<censored!>
<censored!>
YES YES YES
它通过使用所有格重复(即没有回溯)来与[a-zA-Z0-9 ]*+
匹配尽可能多的有效字符。如果在此之后还剩下任何内容,即.+
匹配,那么我们必须陷入无效字符,因此整个字符串会匹配(从而被替换)。否则字符串保持不变。
为了清楚起见,字符串'<censored!>'
在此处用作替换;你可以使用空字符串''
,如果你需要的话。