如何从PHP中的字符串中提取URL?

edt*_*edt 3 php flickr simplexml

我正在使用PHP的"simplexml_load_file"从Flickr获取一些数据.

我的目标是获取照片网址.

我能够得到以下值(分配给PHP变量):

<p><a href="http://www.flickr.com/people/19725893@N00/">codewrecker</a> posted a photo:</p>

<p><a href="http://www.flickr.com/photos/19725893@N00/2302759205/" title="Santa Monica Pier"><img src="http://farm3.static.flickr.com/2298/2302759205_4fb109f367_m.jpg" width="180" height="240" alt="Santa Monica Pier" /></a></p>
Run Code Online (Sandbox Code Playgroud)

我怎样才能提取它的这一部分?

http://farm3.static.flickr.com/2298/2302759205_4fb109f367_m.jpg
Run Code Online (Sandbox Code Playgroud)

万一它有帮助,这是我正在使用的代码:

<?php
$xml = simplexml_load_file("http://api.flickr.com/services/feeds/photos_public.gne?id=19725893@N00&lang=en-us&format=xml&tags=carousel");
foreach($xml->entry as $child) {
    $flickr_content = $child->content; // gets html including img url
    // how can I get the img url from "$flickr_content"???
 }
?>
Run Code Online (Sandbox Code Playgroud)

Tom*_*igh 6

你可以使用正则表达式来解决这个问题,假设HTML的形成方式几乎保持不变,例如:

if (preg_match('/<img src="([^"]+)"/i', $string, $matches)) {
    $imageUrl = $matches[1];   
}
Run Code Online (Sandbox Code Playgroud)

这是相当不健壮的,如果HTML将要改变(例如<img>标签中参数的顺序,HTML格式错误的风险等),你最好使用HTML解析器.