我不能“猜测”我应该使用巫婆语法来提取图像的来源,而只是提取网址而不是src=
这两个引号?
这是我的代码:
function get_all_images_src() {
$content = get_the_content();
preg_match_all('|src="(.*?)"|i', $content, $matches, PREG_SET_ORDER);
foreach($matches as $path) {
echo $path[0];
}
}
当我使用它时,我打印出来了:
src="http://project.bechade.fr/wp-content/uploads/2009/09/mer-300x225.jpg"
我希望只得到这个:
http://project.bechade.fr/wp-content/uploads/2009/09/mer-300x225.jpg
有什么想法吗?
感谢您的帮助。
答案 0 :(得分:5)
不完全是你问题的答案,但在解析html时,请考虑使用正确的html解析器:
foreach($html->find('img') as $element) {
echo $element->src . '<br />';
}
答案 1 :(得分:3)
$path[1]
代替$path[0]
答案 2 :(得分:0)
echo $path[1];
$ path [0]是匹配的完整字符串。 $ path [1]是第一个分组。
答案 3 :(得分:0)
您可以使用“作为分隔符来爆炸字符串,然后您获得的数组中的第二项将是正确的字符串:
$ array = explode('“',$ full_src);
$ bit_you_want = $ array [1];
重新处理原始功能,它将是:
function get_all_images_src() {
$content = get_the_content();
preg_match_all('|src="(.*?)"|i', $content, $matches, PREG_SET_ORDER);
foreach($matches as $path) {
$src = explode('"', $path);
echo $src[1];
}
}
答案 4 :(得分:0)
感谢Ithcy的正确答案。 我想我已经太久没回复了,因为他删除了它,我只是不知道他的答案在哪里消失了......
所以这是我收到的邮件:
'| src =“(。*?)”| i'没有任何意义 正则表达式。试试'| src =“([^”] +)“| i”。 (这仍然不是最强大的 解决方案,但比什么更好 你有。)
此外,其他人都说。您 想要$ path 1,而不是$ path [0]。你是 已经提取了所有的src 属性为$ matches []。有 与$ path [0]无关。如果你是 没有获得所有的src属性 在文中,有一个问题 代码中的其他地方。
还有一件事 - 你应该使用真实的 HTML解析器,因为img标签 不是src的唯一标签 属性。如果您正在使用此代码 在原始HTML源代码上,它将会发生 匹配不仅仅是 标签等。
- ithcy
我做了他告诉我要做的所有事情,包括使用Bart的HTML解析器(第二个回答)。
它就像一个魅力!谢谢你的伴侣...