只想在字符串中允许某些特定字符

时间:2014-07-24 16:27:36

标签: php character strpos

如何只允许字符串中的字符W,L和D?我写了这个

if ((strpos($input, 'w') === false) 
 && (strpos($input, 'd') === false) 
 && (strpos($input, 'l') === false)) { 

 $answer = "FALSE";

} else {

 $answer = "TRUE";

}

但这仅适用于所有字符为W,L,D或 none 的字符为W,L或D.我无法弄清楚如何获取只有部分字符不正确才能发现。

例如

wwwlld = TRUE(正确)
12aab6 = FALSE(正确)
www44d = TRUE(不正确,这需要为FALSE,因为它包含' 44')

任何帮助都非常感激。

P

3 个答案:

答案 0 :(得分:2)

这是需要regular expressions的典型示例,即preg_match function in PHP

你可能想要使用类似下面的内容

$pattern = '/^[wdl]*$/';

这只匹配字符串开头和结尾之间的字符串,集合w,d或l中的0个或更多字符。

答案 1 :(得分:1)

您可以使用模式^[wdl]+$

为此使用正则表达式
$values = array('wwwlld', '12aab6', 'www44d');

foreach($values as $value)
{
  echo $value;
  if (preg_match('/^[wdl]+$/', $value))
    echo " = TRUE\n";
  else
    echo " = FALSE\n";
}

以上输出:

wwwlld = TRUE
12aab6 = FALSE
www44d = FALSE

在线演示here

答案 2 :(得分:0)

$subject = "wwwlld";
preg_match('/^[wdl]+$/', $subject, $matches);
echo ($matches) ? 'TRUE' : 'FALSE';

<强>输出:

//wwwlld = TRUE
//12aab6 = FALSE
//www44d = FALSE