从XML中提取节点就像数据一样,没有额外的PHP库

时间:2009-07-08 22:00:19

标签: php xml

我退回了以下内容:

<links>
    <image_link>http://img357.imageshack.us/img357/9606/48444016.jpg</image_link>
    <thumb_link>http://img357.imageshack.us/img357/9606/48444016.th.jpg</thumb_link>
    <ad_link>http://img357.imageshack.us/my.php?image=48444016.jpg</ad_link>
    <thumb_exists>yes</thumb_exists>
    <total_raters>0</total_raters>
    <ave_rating>0.0</ave_rating>
    <image_location>img357/9606/48444016.jpg</image_location>
    <thumb_location>img357/9606/48444016.th.jpg</thumb_location>
    <server>img357</server>
    <image_name>48444016.jpg</image_name>
    <done_page>http://img357.imageshack.us/content.php?page=done&amp;l=img357/9606/48444016.jpg</done_page>
    <resolution>800x600</resolution>
    <filesize>38477</filesize>
    <image_class>r</image_class>
</links>

我希望尽可能简单,轻松地在PHP中提取image_link。我怎么能这样做?

假设,我无法使用PHP的任何额外的libs /插件。 :)

全部谢谢

3 个答案:

答案 0 :(得分:4)

在Josh的回答中,问题并没有逃避“/”字符。所以Josh提交的代码将成为:

$text = 'string_input';
preg_match('/<image_link>([^<]+)<\/image_link>/gi', $text, $regs);
$result = $regs[0];

以usoban的回答为例,一个例子是:

<?php

// Load the file into $content

$xml = new SimpleXMLElement($content) or die('Error creating a SimpleXML instance');

$imagelink = (string) $xml->image_link; // This is the image link

?>

我建议使用SimpleXML,因为它很容易,正如usoban所说,它是内置的,这意味着它不需要任何外部库。

答案 1 :(得分:3)

您可以使用SimpleXML,因为它是用PHP构建的。

答案 2 :(得分:1)

使用正则表达式

$text = 'string_input';
preg_match('/<image_link>([^<]+)</image_link>/gi', $text, $regs);
$result = $regs[0];