gpt4 book ai didi

php - 保存数据时添加 rel ="nofollow"

转载 作者:可可西里 更新时间:2023-11-01 13:35:00 25 4
gpt4 key购买 nike

我有一个允许用户在我的网站上发表评论的应用程序。它工作正常。我也有工具可以在其中插入他们的网络链接。我对带有他们自己的网络链接的内容感觉很好。

现在我想将 rel="nofollow"添加到他们所写内容的每个链接。

我想在保存数据时使用 php 添加 rel="nofollow"。

那么使用 php 添加 rel="nofollow"或更新 rel="someother"为 rel="someother nofollow"的简单方法是什么

一个好的例子会更有效率

最佳答案

正则表达式确实不是处理 HTML 的最佳工具,尤其是当 PHP 内置了一个非常好的 HTML 解析器时。

如果 rel 属性已经填充,此代码将处理添加 nofollow

$dom = new DOMDocument;

$dom->loadHTML($str);

$anchors = $dom->getElementsByTagName('a');

foreach($anchors as $anchor) {
$rel = array();

if ($anchor->hasAttribute('rel') AND ($relAtt = $anchor->getAttribute('rel')) !== '') {
$rel = preg_split('/\s+/', trim($relAtt));
}

if (in_array('nofollow', $rel)) {
continue;
}

$rel[] = 'nofollow';
$anchor->setAttribute('rel', implode(' ', $rel));
}

var_dump($dom->saveHTML());

CodePad .

生成的 HTML 在 $dom->saveHTML() 中。除了它会用 htmlbody 元素等包装它,所以使用它来提取您输入的 HTML...

$html = '';

foreach($dom->getElementsByTagName('body')->item(0)->childNodes as $element) {
$html .= $dom->saveXML($element, LIBXML_NOEMPTYTAG);
}

echo $html;

如果您有 >= PHP 5.3,请将 saveXML() 替换为 saveHTML() 并删除第二个参数。

例子

这个 HTML...

<a href="">hello</a>

<a href="" rel="">hello</a>

<a href="" rel="hello there">hello</a>

<a href="" rel="nofollow">hello</a>

...转换为...

<a href="" rel="nofollow">hello</a>

<a href="" rel="nofollow">hello</a>

<a href="" rel="hello there nofollow">hello</a>

<a href="" rel="nofollow">hello</a>

关于php - 保存数据时添加 rel ="nofollow",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com