$full_str = <img class="label" title="input contactusform email" id="label_contactusform_email" alt="this is alt tag">
我有这个字符串表达式,需要获取title和alt标记值
$exploded_part = explode('="', $full_str);
$title_text = $exploded_part[2];
// it also included '" id' so need to explode again
$title_revised = explode('"', $title_text);
$actual_title = $title_revised[0];
$alt_text = $exploded_part[4];
// it also included '">' so need to explode again
$alt_revised = explode('"', $alt_text);
$actual_alt = $alt_revised[0];
我已经阅读过使用explode占用了这么多资源并影响了性能,并且在这段代码中必须多次使用。任何想法建议我可以使这个代码更好,并使用一些其他选项,除了爆炸。
编辑:当我在那时使用下面的表达式时,它实际上不是DOM的一部分,它只是数组值的一部分,我必须将获取的alt和title标签放入元素中成为DOM的一部分。我希望这是有道理的。
答案 0 :(得分:0)
您可以使用此正则表达式来提取属性及其值:
(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?
答案 1 :(得分:0)
您可以像{/ p>一样使用DOMDocument
$full_str = '<img class="label" title="input contactusform email" id="label_contactusform_email" alt="this is alt tag">';
$dom = new DOMDocument;
$dom->loadHTML($full_str);
$root = $dom->documentElement;
$getDiv = $root->getElementsByTagName('img');
foreach ($getDiv as $val) {
$title = $val->getAttribute('title');
$alt = $val->getAttribute('alt');
}
echo $alt;
echo $title;