php 匹配alt,php – 匹配“img”标记和“alt”标记和行号之间的字符串

我试图从下面的行中获取“img”标记结束和关闭“a”标记之间的字符串(你好,我来自img标记之后).

hello i am from after img tag

然后检查它们是否匹配.同时我想找出该行的编号.

我尝试了以下代码,它给出了行号和网页行.

$dom = new domDocument;

$dom->loadHTMLFile('http://www.google.com');

$dom->preserveWhiteSpace = true;

$dom->formatOutput = true;

$new = htmlspecialchars($dom->saveHTML(), ENT_QUOTES);

$lines = preg_split('/\r\n|\r|\n/', $new);

foreach ($lines as $lineNumber => $line) {

echo $lineNumber . \r\r. $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}
";

}

我知道regexp不适用于html解析,但我也尝试过,看看它是否适用于以下行.

$alt =’你好,我来自img

标签’

我有的正则表达式是,

// alt里面的任何东西

preg_match_all('|\s*alt[^>]*=[\'"](.*?)[\'"]|i', $alt, $altTag);

//“img”标签结束和关闭“a”标签之间的任何内容.

preg_match_all("#]*>]*>(.*?)#s", $alt, $foo);

它的工作方式非常完美,但是当尝试在变量$line上使用相同的regExp时(从上面的代码中)它就没有给我任何东西.

谁能帮帮我吗.我真的需要做这个工作.谢谢

解决方法:

试试吧

$str = 'hello i am from after img tag';

preg_match_all('#]+>(.*)#isU', $str, $match);

$result = array_map('strip_tags', $match[1]);

print_r($result);

标签:php,dom,regex

来源: https://codeday.me/bug/20190629/1328777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值