我知道带有标签的$ 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找到时,它不会用正斜杠回显字符串。
答案 0 :(得分:1)
if ($contains_path = strpos($aspect, '/'))
应该是
$contains_path = strpos($aspect, '/');
if ($contains_path !== false)
当字符串直接以/
开头时,strpos将返回0(就像你的情况一样)。如果strpos没有匹配,则返回false。
if (0)
和if (false)
是相同的。所以你需要在这里进行严格的比较(=== or !==
)。
答案 1 :(得分:0)
找到的字符串的位置可能为0,计为false,您需要比较为===
if (false !== $contains_path = strpos($aspect, '/')) {
echo $a_expanded[$num];
}
答案 2 :(得分:0)
strpos()
可以返回FALSE
,0或非零值。
strpos()
将返回0. strpos()
将返回布尔值FALSE
。我没有检查严格的相等性,因此if
语句总是返回一个假值,导致我的代码不起作用。
if ($contains_path = strpos($aspect, '/'))
要解决此问题,您可以使用!==
,它会比较和类型的值:
if ($contains_path = (strpos($aspect, '/') !== FALSE))
有关详细信息,请查看以下链接: