Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 提取图像源的语法regex_Php_Regex - Fatal编程技术网

Php 提取图像源的语法regex

Php 提取图像源的语法regex,php,regex,Php,Regex,喂 我不能“猜测”我应该使用什么样的语法来提取图像的源代码,而只是提取网址而不是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[

我不能“猜测”我应该使用什么样的语法来提取图像的源代码,而只是提取网址而不是
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
有什么想法吗


感谢您的帮助。

< P> > $PATH(1)而不是<代码> $PATH(0)

< P>不完全是您的问题的答案,但解析HTML时,请考虑使用适当的HTML解析器:

foreach($html->find('img') as $element) {
  echo $element->src . '<br />';
}
foreach($html->find('img')as$element){
echo$element->src.“
”; }
见:


$path[0]是匹配的完整字符串$路径[1]是第一个分组。

可以使用“作为delimeter”分解字符串,然后得到的数组中的第二项将是正确的字符串:

$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];    
}
}
谢谢你的正确回答。 我想我已经很久没有回复了,因为他删除了它,我只是不知道他的答案到哪里去了

这是我收到的邮件:

“|src=“(.*?”| i”作为一个 正则表达式。请尝试使用“|src=”([^“]+)“| i”。 (哪一个仍然不是最强大的 但解决方案比什么好 你得到了

还有,其他人都说了什么,你呢 需要$path,而不是$path[0]。您需要 已提取所有src 将属性转换为$matches[]。该属性已 与$path[0]无关。如果 没有获得所有的src属性 在课文中,有一个问题 代码中的其他地方

还有一件事-你应该用一个真正的 HTML解析器,因为img标记 不是src的唯一标记 属性。如果您正在使用此代码 在原始HTML源代码中,它将 不只是 标签等

-伊西

我做了他让我做的一切,包括使用Bart的HTML解析器(第二个答案)


它很有魅力!谢谢你,伙计…

我不懂PHP,但我建议尝试PREG_PATTERN_ORDER,也许还有$path[1]。我使用“$path[0]”,因为我想显示所有的src图像,我只得到第一个带有“$path[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];    
}
}