php – 匹配“img”标记和“alt”标记和行号之间的字符串
发布时间:2020-12-13 16:49:52 所属栏目:PHP教程 来源:网络整理
导读:我试图从下面的行中获
我试图从下面的行中获取“img”标记结束和关闭“a”标记之间的字符串(你好,我来自img标记之后).
<a href="products.html><img src="image.jpg" alt="alt value">hello i am from after img tag</a> 然后检查它们是否匹配.同时我想找出该行的编号. $dom = new domDocument; $dom->loadHTMLFile('http://www.google.com'); $dom->preserveWhiteSpace = true; $dom->formatOutput = true; $new = htmlspecialchars($dom->saveHTML(),ENT_QUOTES); $lines = preg_split('/rn|r|n/',$new); foreach ($lines as $lineNumber => $line) { echo $lineNumber . rr. $line; } 以下代码为我提供了图像源和alt标记.我无法获得“img”标签结束和关闭“a”标签之间的行号或文本(你好我来自img标签). $alts = array(); $tags = $dom->getElementsByTagName('img'); foreach($tags as $tag) { $alts[$tag->attributes->getNamedItem('src')->nodeValue] = $tag->attributes->getNamedItem('alt')->nodeValue; } foreach($alts as $key => $alt) { echo "{$key} => {$alt}<br/>"; } 我知道regexp不适用于html解析,但我也尝试过,看看它是否适用于以下行. preg_match_all('|s*alt[^>]*=['"](.*?)['"]|i',$alt,$altTag); //“img”标签结束和关闭“a”标签之间的任何内容. preg_match_all("#<s*a[^>]*><s*img[^>]*>(.*?)<s*/s*a>#s",$foo); 它的工作方式非常完美,但是当尝试在变量$line上使用相同的regExp时(从上面的代码中)它就没有给我任何东西. 解决方法
试试吧
$str = '<a href="products.html><img src="image.jpg" alt="alt value">hello i am from after img tag</a>'; preg_match_all('#<a[^>]+>(.*)</a>#isU',$str,$match); $result = array_map('strip_tags',$match[1]); print_r($result); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |