解析HTML标记

时间:2012-08-27 11:58:19

标签: php mysql

我从db中获取值,如:

<p><img alt="" src="images/1.jpg" style="width: 2450px; height: 1054px;" /></p>

并希望只获得src="images/1.jpg"但不知道如何。请指导我

2 个答案:

答案 0 :(得分:1)

如果您需要源代码,请使用DOM Parser:

// Construct a new DOMDocument with your fragment
$domDoc = new DOMDocument;
$domDoc->loadHTML( '<p><img src="images/1.jpg" style="width: 2450px;" /></p>' );

// Locate the first image the document
$img = $domDoc->getElementsByTagName( "img" )->item( 0 );

// Echo its src value
echo $img->attributes->getNamedItem( "src" )->nodeValue;

结果:http://codepad.org/oMXGK9Iu

理想情况下,您可以在访问项目#0之前确保图像元素存在。同样,在跳出并抓住它们之前,您将确保属性存在。

进一步阅读:http://www.php.net/manual/en/class.domdocument.php

如果您只想抓取文本的特定部分,可以使用简单的正则表达式:

// Prep our html
$html = '<p><img src="images/1.jpg" style="width: 2450px;" /></p>';

// Look for the source string
preg_match( '/src=\".*?\"/', $html, $matches );

// If we found it, spit it out.
echo $matches ? $matches[0] : "No source";

答案 1 :(得分:0)

如果alt=""默认为空,样式默认为width: 2450px; height: 1054px;,则可以使用:

<?php
$str = '<p><img alt="" src="images/1.jpg" style="width: 2450px; height: 1054px;" /></p>';
$str = str_replace('<p><img alt="" src="','', $str);
$str = str_replace('" style="width: 2450px; height: 1054px;" /></p>','',$str);
echo $str; //Outputs: images/1.jpg
?>