我正在使用以下代码返回包含" http://"的数据 - 代码正常工作,我获得了我需要的数据。
工作代码
foreach($all_urls as $index => $value) {
if (preg_match('/http:/', $value)) {
echo "<pre>{$value}</pre>";
}
}
但是,如果找不到匹配项,我也希望它也返回消息。我尝试过,但似乎不起作用。
不工作代码
foreach($all_urls as $index => $value) {
if (preg_match('/http:/', $value) === false) {
echo 'no matches found';
} elseif (preg_match('/http:/', $value)) {
echo "<pre>{$value}</pre>";
}
}
另外,尝试了一下,但是它不好,因为我会重复每次迭代的"找不到匹配项"。
foreach($all_urls as $index => $value) {
if (preg_match('/http:/', $value)) {
echo "<pre>{$value}</pre>";
} else {
echo "no matches found";
}
}
我需要一次检查一次,如果在数组中找不到" http://",则仅返回一次"未找到匹配"
使用boolean
变量应该是一种很好的方法。
一旦我们有匹配,我们将将布尔值设置为 true
。否则,它将具有其初始值-false
。
循环后,我们应该检查变量的值,如果保留为false
,我们应该打印"未找到的匹配项"消息。
$matches = false;
foreach($all_urls as $index => $value) {
if (preg_match('/http:/', $value)) {
echo "<pre>{$value}</pre>";
$matches = true;
}
}
if(!$matches){
echo "no matches found";
}
只需添加一个变量,该变量可以确保仅输出no matches
,例如:
$error = FALSE;
foreach($all_urls as $index => $value) {
if (preg_match('/http:/', $value)) {
echo "<pre>{$value}</pre>";
} else {
if(!$error) {
echo "no matches found";
$error = TRUE;
}
}
}