false 时 strpos 仍然返回
strpos still returning when false
$post_id = 228;
$content_post = get_post($post_id);
$content = $content_post->post_content;
$doc = new DOMDocument();
$doc->loadHTML($content);
$links = $doc->getElementsByTagName('a');
foreach ($links as $link){
$href = $link->getAttribute('href');
$avoid = array('.jpg', '.png', '.gif', '.jpeg');
if (strpos($href, $avoid) == false) {
echo $link->nodeValue, '<br>';
echo $href, '<br>';
}
}
strpos 在 false 时仍然返回 url - 知道我错过了什么吗? !==
也不行。
补充信息:我正在尝试排除所有图片网址,所以如果您有更好的方法 - 请随时分享。
更新,也不行。 (使用文档尝试过)。
foreach ($links as $link){
$href = $link->getAttribute('href');
$avoid = array('.jpg', '.png', '.gif', '.jpeg');
$pos = strpos($href, $avoid);
if ($pos === false) {
echo $link->nodeValue, '<br>';
echo $href, '<br>';
}
}
Warning: strpos(): needle is not a string or an integer
。使用另一种方式,例如 preg_match:
$href = 'aaa.jpeg';
preg_match('/(\.jpg|\.png|\.gif|\.jpeg)/', $href, $matches);
var_dump($matches);
if(empty($matches)) {
//not match...
}
如果你想检查$href
是否包含$avoid
中的任何字符串,你可以将它们替换为空,看看是否还有原始字符串。
if ($href == str_replace($avoid, '', $href)) { ...
str_replace
可以取一个数组,不像 strpos
.
$post_id = 228;
$content_post = get_post($post_id);
$content = $content_post->post_content;
$doc = new DOMDocument();
$doc->loadHTML($content);
$links = $doc->getElementsByTagName('a');
foreach ($links as $link){
$href = $link->getAttribute('href');
$avoid = array('.jpg', '.png', '.gif', '.jpeg');
if (strpos($href, $avoid) == false) {
echo $link->nodeValue, '<br>';
echo $href, '<br>';
}
}
strpos 在 false 时仍然返回 url - 知道我错过了什么吗? !==
也不行。
补充信息:我正在尝试排除所有图片网址,所以如果您有更好的方法 - 请随时分享。
更新,也不行。 (使用文档尝试过)。
foreach ($links as $link){
$href = $link->getAttribute('href');
$avoid = array('.jpg', '.png', '.gif', '.jpeg');
$pos = strpos($href, $avoid);
if ($pos === false) {
echo $link->nodeValue, '<br>';
echo $href, '<br>';
}
}
Warning: strpos(): needle is not a string or an integer
。使用另一种方式,例如 preg_match:
$href = 'aaa.jpeg';
preg_match('/(\.jpg|\.png|\.gif|\.jpeg)/', $href, $matches);
var_dump($matches);
if(empty($matches)) {
//not match...
}
如果你想检查$href
是否包含$avoid
中的任何字符串,你可以将它们替换为空,看看是否还有原始字符串。
if ($href == str_replace($avoid, '', $href)) { ...
str_replace
可以取一个数组,不像 strpos
.