gpt4 book ai didi

php - 检查用户输入的链接语法

转载 作者:可可西里 更新时间:2023-11-01 06:47:14 24 4
gpt4 key购买 nike

我有一个网站,用户可以在其中输入评论和描述。我也允许他们输入链接。我用 strip_tags链接除外。我还添加了 rel="nofollow"通过一个简单的 string_replace。

问题是,如果用户在开始标记的末尾遗漏双引号,就会弄乱 html。关于如何检查或修复不正确的链接语法的任何建议?

$comment = $_POST['comment'];
$comment = strip_tags($comment,"<a>");
$comment = str_replace('<a','<a rel="nofollow"',$comment);
$comment = mysql_real_escape_string($comment);

以及输出时

$comment = stripslashes($comment);

回显$评论;

问题是当用户添加 <a href="www.blah.com>忘记最后一个双引号,这会打乱评论 div 的显示方式。

最佳答案

这是你必须做的:

function fixLink($link) {
$link = str_replace(array('<a', '"', '</a>'), '', $link);
$link = str_replace(
array('=', '>', ' '),
array('="', '">', '" '),
$link);
return '<a rel="nofollow' . $link . '</a>';
}

echo fixLink('<a href="/index.html>asd</a>') . "\n";
echo fixLink('<a class="awesome" href="/index.html>asd</a>') . "\n";
echo fixLink('<a href="/index.html class="awesome">asd</a>') . "\n";
echo fixLink('<a target="_blank" href="/index.html class="awesome">asd</a>') . "\n";
echo fixLink('<a target="_blank" href="/index.html class="awesome>asd</a>') . "\n";
echo fixLink('<a target="_blank" href="/index.html target="_blank" class="awesome">asd</a>') . "\n";
echo fixLink('<a href="/index.html class=awesome">asd</a>') . "\n";

这将输出:

<a rel="nofollow" href="/index.html">asd</a>
<a rel="nofollow" class="awesome" href="/index.html">asd</a>
<a rel="nofollow" href="/index.html" class="awesome">asd</a>
<a rel="nofollow" target="_blank" href="/index.html" class="awesome">asd</a>
<a rel="nofollow" target="_blank" href="/index.html" class="awesome">asd</a>
<a rel="nofollow" target="_blank" href="/index.html" target="_blank" class="awesome">asd</a>
<a rel="nofollow" href="/index.html" class="awesome">asd</a>

关于php - 检查用户输入的链接语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7238004/

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