我在php中的变量中有html字符串。我想从中得到标签。例如:
$str ='<p><img src="link"></p><p>text</p>';
如何从此字符串中获取<img src="link">
(或任何img
标记及其内容)?
答案 0 :(得分:3)
所有答案看起来都有些混乱,包括正则表达式。
你不需要它。
$str ='<p><img src="link"></p><p>text</p>';
echo strip_tags($str, '<img>');
会很好地工作。
答案 1 :(得分:2)
您可以使用正则表达式,但必须小心处理可能存在的任何属性,或者您可以使用DOMDocument::loadHTML功能以及DOMDocument::getElementsByTagName
$doc = new DOMDocument();
$doc->loadHTML($str);
// gets all img tags in the string
$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
$img_strings[] = $doc->saveHTML($img);
}
然后,您在$img_strings
变量中包含所有img标记。
在foreach
循环中,您还可以获取标记内的属性:
$img->getAttribute('src');
答案 2 :(得分:0)
如果我理解你想要做的事情:
我会建议像 what is described here.
他们创建了一个函数来选择两个特定字符串之间包含的字符串。这是他们的功能:
function getInnerSubstring($string,$delim){
// "foo a foo" becomes: array(""," a ","")
$string = explode($delim, $string, 3); // also, we only need 2 items at most
// we check whether the 2nd is set and return it, otherwise we return an empty string
return isset($string[1]) ? $string[1] : '';
}
只要您的HTML中没有另一组""
,那么这应该适合您。
如果您使用此功能,则可以搜索仅在这两个"
答案 3 :(得分:-1)