我正在尝试创建一个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
一词。
那么我怎样才能正确找到字符串中的任何目标词呢?
谢谢!
答案 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 :上面的正则表达式模式将匹配网址中的carmaboy
和boy
。如果您不想要,可以使用此模式(它只匹配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”);