PHP搜索字符串数组的字符串

时间:2014-07-12 18:33:30

标签: php

我正在尝试创建一个PHP脚本,检查un URL字符串是否与任何指向的单词匹配。

所以这是:

$yourWord='http://mywebsite.com/combo-points-carmaboy-boy';
$targets = array("kid", "kids", "boy", "six");

if (in_array($yourWord, $targets)) {
echo "FOUND!!";
}
else {
echo "NOT FOUND!";
}

在这种情况下,它会向我提供结果NOT FOUND,但正如您可以看到boy中包含combo-points-carmaboy-boy一词。

那么我怎样才能正确找到字符串中的任何目标词呢?

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用preg_match()

$pattern = '/('.implode('|', $targets).')/';

if (preg_match($pattern, $yourWord, $matches)) {
  echo 'FOUND!!';
} else {
  echo 'NOT FOUND!';
}

修改:请注意,这将匹配整个网址(包括域)中的目标。如果您只想匹配路径,则可以解析URL:

$path = parse_url($yourWord, PHP_URL_PATH);

然后,您可以在$path中使用此preg_match()变量:

if (preg_match($pattern, $path, $matches)) {

修改2 :上面的正则表达式模式将匹配网址中的carmaboyboy。如果您不想要,可以使用此模式(它只匹配boy):

$pattern = '/\b('.implode('|', $targets).')\b/';

答案 1 :(得分:0)

试一试:

$yourWord='http://mywebsite.com/combo-points-carmaboy-boy';
$targets = array("kid", "kids", "boy", "six");

foreach($targets as $target)
{
    if(preg_match("/" . $target . "/", $yourWord))
    {
        echo "Found target : " . $target . "<br/>" . PHP_EOL ;
    }
}

答案 2 :(得分:0)

$ yourWord is = http://mywebsite.com/combo-points-carmaboy-boy 我认为问题从这里开始。因为你正在寻找 boy 这个词,但你是int。不是男孩。我认为你可以使用$ yourWord数组,然后你可以再次使用代码。

对于前。 $ yourWord = array(“http:/mywebsite.com/”,“combo”,“points”,“carmaboy”,“boy”);