只需从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;