Dad*_*daB 1 php algorithm preg-match string-parsing
可以说我有一堆坏话:
$badwords = array("one", "two", "three");
Run Code Online (Sandbox Code Playgroud)
随机字符串:
$string = "some variable text";
Run Code Online (Sandbox Code Playgroud)
如何创建此循环:
if (one or more items from the $badwords array is found in $string)
echo "sorry bad word found";
else
echo "string contains no bad words";
Run Code Online (Sandbox Code Playgroud)
示例:
如果$string = "one fine day" or "one fine day two of us did something",用户应该看到抱歉坏词找到的消息.
如果$string = "fine day",用户应该看到字符串包含没有坏词的消息.
据我所知,你不能preg_match从数组.有什么建议吗?
这个怎么样:
$badWords = array('one', 'two', 'three');
$stringToCheck = 'some stringy thing';
// $stringToCheck = 'one stringy thing';
$noBadWordsFound = true;
foreach ($badWords as $badWord) {
if (preg_match("/\b$badWord\b/", $stringToCheck)) {
$noBadWordsFound = false;
break;
}
}
if ($noBadWordsFound) { ... } else { ... }
Run Code Online (Sandbox Code Playgroud)
小智 5
你为什么想在preg_match()这里使用?
那这个呢:
foreach($badwords as $badword)
{
if (strpos($string, $badword) !== false)
echo "sorry bad word found";
else
echo "string contains no bad words";
}
Run Code Online (Sandbox Code Playgroud)
如果preg_match()由于某些原因需要,可以动态生成正则表达式模式.像这样的东西:
$pattern = '/(' . implode('|', $badwords) . ')/'; // $pattern = /(one|two|three)/
$result = preg_match($pattern, $string);
Run Code Online (Sandbox Code Playgroud)
HTH
| 归档时间: |
|
| 查看次数: |
15230 次 |
| 最近记录: |