如果 preg_match 没有发现任何回声

if preg_match finds nothing echo something

这是我的代码:

function getaname($name)
{
    $result = file_get_contents('https://www.something.com');
    $regex = '/<div class="classname">([^<]*)<\/div>/';
    if (preg_match($regex, $result, $matches)) {   
        return $matches[1]; 
    } else{
        return 'N/A';}
}

preg_matchdiv 中找到某些内容时,此代码可以完美运行,但我希望它在 echo 或 return N/A 中找不到任何内容喜欢潜水

<div></div>

我想你没有准确解释条件,我想你检查了空 div,在你的情况下是 <div class="classname"></div>

在这种情况下,您的正则表达式仍然会发现 <div class="classname">preg_match returns 真值的出现。因此,在这种情况下,您还需要检查 $matches[1] 是否为空:

if (preg_match($regex, $result, $matches) && !empty($matches[1])) {
    return $matches[1]; 
} else {
    return 'N/A';
}

这里是 fiddle https://3v4l.org/XUvUD,取消注释 $result 行并查看每种情况下的输出。

或者您的正则表达式可以更改为 $regex = '/<div class="classname">([^<]+)<\/div>/';,参见 plus 而不是 *,这意味着 "at least one symbol"。在这种情况下,不应更改其余代码。再次 fiddle 这里 https://3v4l.org/Eo1bF.