当所有标签都存在时,这很有效:
$data='<a href="http://somelink.com"><img src="http://somelink.com/image.png"></a>'
$html = $data;
$dom = new DOMDocument();
$dom->loadHTML($html);
$data = ($dom->getElementsByTagName('a')[0]->getAttribute('href'));
输出
http://somelink.com
但是如果缺少第一个标签
$data='a href="http://somelink.com"><img src="http://somelink.com/image.png"></a>'
输出为空白,实际上使整个页面变为空白。有没有办法仍然有相同的输出
http://somelink.com
即使第一个标签丢失了吗?
答案 0 :(得分:1)
否,因为您没有HTML元素标记,您的字符包含空格和引号。
答案 1 :(得分:0)
我不认为这是可能的。由于$dom->getElementsByTagName('a')[0]->getAttribute('href')
执行此操作,因此您要在变量<a>
中存储HTML标记$data
的属性值。但是如果删除HTML标记,则无法获取不存在的标记的Attribute值。
除此之外,如果您仍想通过删除HTML标记来执行此操作,则应使用字符串操作功能从存储在php变量中的字符串中提取URL。
REGEX也是您问题的解决方案。
以下是从字符串中提取URL的代码。
$data='a href="http://somelink.com"><img src="http://somelink.com/image.png"></a>';
preg_match_all('@((https?://)?([-\\w]+\\.[-\\w\\.]+)+\\w(:\\d+)?(/([-\\w/_\\.]*(\\?\\S+)?)?)*)@', $data, $match);
echo $match[0][0]."<br>"; //URL of <a> tag
echo $match[0][1]; //URL of image tag