只需从PHP中的字符串获取图像URL

只需从PHP中的字符串获取图像URL,php,string,Php,String,从这样的字符串中,我试图检索供PHP中其他地方使用的url 我知道正则表达式是一种方法,但我现在无法理解它们 有人能帮忙吗?preg\u match\u all('~ preg_match_all('~<img.*?src=["\']+(.*?)["\']+~', $html, $urls); $urls = $urls[1] 我认为使用DOMDocument对象会更好: $text='alabala'; $htmlDom=新的DOMDocument; $htmlDom->loadHTM

从这样的字符串
中,我试图检索供PHP中其他地方使用的url


我知道正则表达式是一种方法,但我现在无法理解它们

有人能帮忙吗?

preg\u match\u all('~
preg_match_all('~<img.*?src=["\']+(.*?)["\']+~', $html, $urls);
$urls = $urls[1]
我认为使用DOMDocument对象会更好:

$text='alabala

'; $htmlDom=新的DOMDocument; $htmlDom->loadHTML($text); $imageTags=$htmlDom->getElementsByTagName('img'); $extractedImages=array(); foreach($imageTags作为$imageTag){ $extractedImages[]=$imageTag->getAttribute('src'); } 回显“”;变量转储($extractedImages);退出;
这个正则表达式在很多情况下都不起作用。和往常一样,在HTML中使用正则表达式是个坏主意。那么,从一行
HTML
中获取
url
的最佳方法是什么呢?@shane一个更易于维护的方法是使用HTML解析器类。例如@drrcknlsn:在这种情况下,它将rk.你能告诉我什么时候正则表达式不能处理这个问题吗?@genesis它不会匹配
和其他情况。它也会匹配它不应该匹配的东西,比如
@shane你应该使用DOM解析器。我已经使用了下面给出的答案,这很有效,但有更好的方法吗?我不知道这不是一个完整的文档通过,只需几行HTML…“正则表达式就是出路”有人一直在欺骗你。正则表达式只是正则语言可以接受的方式。对于其他语言,它们可能会造成大量问题。另请参阅
$text = '<html><body><p>ala bala</p><img src="/images/mylondon.jpg" /></body></html>';
$htmlDom = new DOMDocument;
$htmlDom->loadHTML($text);

$imageTags = $htmlDom->getElementsByTagName('img');

$extractedImages = array();
foreach($imageTags as $imageTag){
   $extractedImages[] = $imageTag->getAttribute('src');
}

echo '<pre>'; var_dump($extractedImages); exit;