正则表达式找到target ="_ blank"链接并在关闭</a>标记之前添加文本

1 php regex hyperlink

我需要能够解析一些文本并找到标签具有target ="_ blank"的所有实例....并且对于每个匹配,添加(例如):此链接在关闭标记之前的新窗口中打开.

例如:

之前:

<a href="http://any-website-on-the-internet-or-local-path" target="_blank">Go here now</a>
Run Code Online (Sandbox Code Playgroud)

后:

<a href="http://any-website-on-the-internet-or-local-path" target="_blank">Go here now<span>(This link opens in a new window)</span></a>
Run Code Online (Sandbox Code Playgroud)

这是一个PHP站点,所以我假设preg_replace()将是方法...我只是没有正确编写正则表达式的技能.

提前感谢任何人都可以提供的帮助.

Nie*_*sol 7

您永远不应该使用正则表达式来解析HTML,除非在非常明确和受控制的情况下.

相反,尝试一个内置的解析器:

$dom = new DOMDocument();
$dom->loadHTML($your_html_source);
$xpath = new DOMXPath($dom);
$links = $xpath->query("//a[@target='_blank']");
foreach($links as $link) {
    $link->appendChild($dom->createTextNode(" (This link opens in a new window)"));
}
$output = $dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)

或者,如果将其输出到浏览器,则可以使用CSS:

a[target='_blank']:after {
    content: ' (This link opens in a new window)';
}
Run Code Online (Sandbox Code Playgroud)