我从数据库中提取 HTML 并使用 PHP 将其显示在网页上。可以这么说,将要放入 HTML 的人经验不足,可能会在创建诸如链接之类的东西时遇到困难。我需要在新页面中打开所有链接(我将通过在标签target="_blank"内添加来实现<a>)。现在的问题是:最好的方法是什么?
作为数据库中以下 HTML 的示例:
<a href="www.google.com">link</a>
Run Code Online (Sandbox Code Playgroud)
应该输出为:
<a href="www.google.com" target="_blank">link</a>
Run Code Online (Sandbox Code Playgroud)
我目前有这条线可以做我想做的事:
$text = preg_replace('/(<a.*?)>/', '$1 target="_blank">', $text);
Run Code Online (Sandbox Code Playgroud)
但据我从这个答案和许多其他答案中得知,不建议使用正则表达式和 HTML。有没有更好的办法?对于如此简单的操作,使用 HTML/XML 解析器等似乎有些过分了。
更好的方法是在 Javascript 中执行此操作并让客户端处理它。如果你使用jquery,那么就很简单:
$(document).ready(function() {
$('a').attr('target', '_blank');
});
Run Code Online (Sandbox Code Playgroud)
或者在普通的 JavaScript 中:
window.onload = function() {
var a = document.getElementsByTagName('A');
for (var i =0, l=a.length; i < l; i++) {
a[i].setAttribute('target', '_blank');
}
}
Run Code Online (Sandbox Code Playgroud)
如果您确实需要用 PHP 完成它:
$html = "YOUR HTML STRING";
$doc = new DOMDocument();
$dom = $doc->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $link) {
$link->setAttribute('target', '_blank');
}
$html = $dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)
应该管用
| 归档时间: |
|
| 查看次数: |
1507 次 |
| 最近记录: |