我知道带有标签的 $a 变量格式不正确,但这与问题无关。
问题是 strpos 正在数组中每个键的值中查找正斜杠 /,但它没有打印。
$a = '<a target="" href="/test/url">test';
$a_expanded = explode("\"", $a);
echo print_r($a_expanded);
foreach($a_expanded as $num => $aspect) {
echo $aspect;
if ($contains_path = strpos($aspect, '/')) {
echo $a_expanded[$num];
}
}
它会回显数组和每个方面,但不会回显 strpos 找到时带有正斜杠的字符串。
if ($contains_path = strpos($aspect, '/'))
应该是
$contains_path = strpos($aspect, '/');
if ($contains_path !== false)
当字符串直接以 /
开头时,as strpos 将返回 0 (在你的情况下也是如此)。如果 strpos 没有匹配,则返回 false。
if (0)
和 if (false)
是一样的。所以这里需要严格比较(=== or !==
)。
找到的字符串位置可能是0,算作 false,需要比较
===
if (false !== $contains_path = strpos($aspect, '/')) {
echo $a_expanded[$num];
}
strpos()
可以返回 FALSE
、0 或非零值。
strpos()
返回0。strpos()
返回布尔值FALSE
。我没有检查严格相等,因此
if
语句总是返回错误值,导致我的代码无法工作。
if ($contains_path = strpos($aspect, '/'))
要解决此问题,您可以使用
!==
,它会比较类型 和 值:
if ($contains_path = (strpos($aspect, '/') !== FALSE))
欲了解更多信息,请查看以下链接: