加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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解析,但我也尝试过,看看它是否适用于以下行.
????$alt =’你好,我来自img
????标签’
我有的正则表达式是,
// alt里面的任何东西

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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读