获取PHP图像列表的src
我知道这听起来有点奇怪,但我有一个字符串:获取PHP图像列表的src,php,string,Php,String,我知道这听起来有点奇怪,但我有一个字符串: <img src="image1.gif" width="20" height="20"><img src="image3.gif" width="20" height="20"><img src="image2.gif" width="20" height="20"> 有没有一种简单的方法可以将其放入 数组('image1.gif'、'image3.gif'、'image2.gif') 谢谢。使用正则表达式将
<img src="image1.gif" width="20" height="20"><img src="image3.gif" width="20" height="20"><img src="image2.gif" width="20" height="20">
有没有一种简单的方法可以将其放入
数组('image1.gif'、'image3.gif'、'image2.gif')
谢谢。使用正则表达式将每个项提取到数组或字符串中 听起来像是一个家庭作业的问题,我曾经在一天无论如何,这应该让你接近
src\s*=\s*([\'”])?([^\'”>]+)(\1)?
使用正则表达式将每个项提取到数组或字符串中
听起来像是一个家庭作业的问题,我曾经在一天无论如何,这应该让你接近
src\s*=\s*([\'”])?([^\'”>]+)(\1)?
是
:)是的
:)尽管您试图从PHP代码/src获取这些值,但您希望如何实现解决方案?尽管您试图从PHP代码/src获取这些值,但可能存在重复的问题。您希望如何实现解决方案?使用DOM的可能重复是正确的解析方法,regex是一个bandaid。通常我同意,但不是在这种情况下-他有一个非常简单的字符串,不是一个完整的DOM,甚至不是在(x)HTML块中序列化的部分DOM-它可能/看起来/像它,但它不是-正则表达式是处理这个问题的有效方法,在这种情况下DOM是overkill@nathan按照这种逻辑,$res=array(“image1.gif”、“image3.gif”、“image2.gif”)
也是一个有效的解决方案。你对这个问题的理解太狭隘了,你需要将OP给出的示例推广到其他情况,对于一般HTML,正则表达式不起作用。使用DOM是正确的解析方法,正则表达式是一个bandaid。通常我会同意,但在这种情况下不是这样的-他有一个非常简单的字符串,不是一个完整的DOM,甚至是在(x)块中序列化的部分DOMHTML-它可能/看起来/像它,但它不是-正则表达式是处理这个问题的有效方法,DOM在这种情况下是有效的overkill@nathan按照这种逻辑,$res=array(“image1.gif”、“image3.gif”、“image2.gif”)
也是一种有效的解决方案。你对这个问题的理解太狭隘了,你需要将OP给出的例子推广到其他情况,对于一般的HTML,正则表达式不起作用。啊哈,谢谢!我没想到会有一个完整的函数,但我知道这与正则表达式有关……这让我很害怕!谢谢。啊哈,谢谢!我没想到会有一个完整的函数,但我知道这与正则表达式有关……这让我很害怕!非常感谢。
<?php
$xml = <<<XML
<img src="image1.gif" width="20" height="20">
<img src="image3.gif" width="20" height="20">
<img src="image2.gif" width="20" height="20">
XML;
libxml_use_internal_errors(true);
$d = new DOMDocument();
$d->loadHTML($xml);
$res = array();
foreach ($d->getElementsByTagName("img") as $e) {
$res[] = $e->getAttribute("src");
}
print_r($res);
Array
(
[0] => image1.gif
[1] => image3.gif
[2] => image2.gif
)
function get_image_sources( $s )
{
preg_match_all( '/src="([^"]+)"/i' , $s , $sources );
if(!(count($sources) == 2) || !count($sources[1]) ) return array();
return $sources[1];
}