如果 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_match
在 div
中找到某些内容时,此代码可以完美运行,但我希望它在 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.
这是我的代码:
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_match
在 div
中找到某些内容时,此代码可以完美运行,但我希望它在 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.