如何使用PHP选择图像src

如何使用PHP选择图像src,php,preg-replace,preg-match-all,Php,Preg Replace,Preg Match All,我有一些图像,有几种形式,如: <a href="" class="link-img" alt=""> <img editable="true" style="display: block; cursor: default;" class="main-image" width="538" height="auto" src="src" alt="large image"> </a> 就像这样: <a href="" class="li

我有一些图像,有几种形式,如:

<a href="" class="link-img" alt="">
  <img editable="true" style="display: block; cursor: default;" class="main-image" 
    width="538" height="auto" src="src" alt="large image">
</a>

就像这样:

<a href="" class="link link-img">
 <img src="src" style="width: 100%; display: block; cursor: pointer;" editable="true" 
  class="main-image imageLink" width="" height="auto" alt="">
</a>

因此,我选择src图像的代码是:

$c = preg_replace('/<a href="(.+)" class="link link-img" alt="(.+)"><img src="(.+)"><\/a>/i'
,'<% link url="$1" caption="<img style=max-width:500px; src=$8 >" html="true" %>',$c);
$c=preg\u replace('//i'
“,”,$c);

我试了好几次,但是代码都不起作用,所以如果有人知道我会非常感激的。

试着用这种方法从image
src=“([^”]+)”

编辑:请参见此处的正则表达式

代码示例:

$re = "/src=\"([^\"]+)\"/"; 
$str = "<a href=\"\" class=\"link-img\" alt=\"\">\n  <img editable=\"true\" style=\"display: block; cursor: default;\" class=\"main-image\" \n    width=\"538\" height=\"auto\" src=\"src\" alt=\"large image\">\n</a>\n\n<a href=\"\" class=\"link link-img\">\n <img src=\"src\" style=\"width: 100%; display: block; cursor: pointer;\" editable=\"true\" \n  class=\"main-image imageLink\" width=\"\" height=\"auto\" alt=\"\">\n</a>"; 

preg_match_all($re, $str, $matches);
$re=“/src=\”([^\“]+)\“/”;
$str=“\n\n”;
预匹配全部($re,$str,$MATCHS);

要从HTML中提取数据,请使用HTML解析器,而不是一些regexp。您需要使用类似的东西,但我需要在服务器端使用好的事情PHPDomDocument不用于客户端,然后我建议使用不同的regex
/src=((['”)(?:[^\2]|\2+*\2)/g
。这一个匹配破坏的HTML属性,尽可能接近HTML/XML解析器的行为。实际上,使用
/src=(['”)(?:[^\2]|+2+?\2/gi
。这一个工作正常。类似
/code>的输入将匹配
src=“test”
将匹配
我的新“测试”
将匹配
src='test”“/>我的新“测试”
src='55
。很抱歉淹没了这个!我已经创建了一个新的正则表达式:
src=([^'>]+|(['']?)(?:[^\2]++\2”)
。这一个现在与
一起使用,它与
src=55
匹配。只是想让事情变得不可能。有些人会对这样的正则表达式非常生气。但是,嘿,它起作用了!