-1

为什么关闭?人们真的认为没有其他人需要学习如何将两个函数应用于一个字符串吗?顺便说一句,这就是问题所在。

* * *此问题已解决工作代码:

link_up(htmlentities($row['note']))

感谢您的帮助,我猜只需要正确的语法。谢谢!

好的,所以我有一个表格,访客可以填写以留下便条。我创建了一个名为 link_up 的函数,它可以在不使用 html 标签的情况下将笔记中键入的网址转换为可点击的链接。问题是因为我将显示用户输入,所以我还想在显示时使用 htmlentities。这是我在没有 htmlentities 的情况下工作的代码。

这有效,但不安全......

<tr><td class='note'>" . link_up($row['note']) . "</td>" ;

这也有效,但不使用我为它创建的 link_up 函数

echo "<tr><td class='note'>" . htmlentities($row['note']) . "</td>" ;

所以我需要的是这样的(但这显然行不通)

echo "<tr><td class='note'>" . htmlentities . link_up($row['note']) . "</td>" ;

所以我想我要问的是,如何同时使用我创建的 htmlentities 函数和 link_up 函数,以便当 $row['note'] 被回显时,它既安全又能按预期工作?或者问我如何在一个回显字符串上同时使用两个函数可能更有意义?

这是 link_up 函数

function link_up($text)  
{  
$text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" class=\"notelink\" target=\"blank\">$3</a>", $text);  
$text= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" class=\"notelink\" target=\"blank\" >$3</a>", $text);  
$text= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:$2@$3\">$2@$3</a>", $text);  
return($text);  
}  
4

2 回答 2

1

你有一个很大的误解(只是说让你更容易订购东西)。

htmlentities()功能是对文本进行编码,使其在 HTML 文档中保持不变。

但是,在您的情况下,您已经生成了要在文档中用作链接的 HTML的 HTML,因此链接位于超文本中:

link_up()

您可能将两者混合在一起,以至于这两个功能不能很好地协同工作。但是,如果幸运的话,它们可以很好地协同工作,只需按其他顺序使用它们:

link_up(htmlentities($row['note']));

那是首先在内部创建 HTML,然后在链接周围添加更多的 HTML。

于 2013-04-16T22:59:21.240 回答
-2

尝试这个?我做了同样的事情,但我只是创建了我的链接,而不是使用函数调用。

 <tr><td class='note'><?php echo link_up(htmlentities($row['note']), ENT_QUOTES, 'UTF-8');?></td>" 
于 2013-04-16T22:56:27.577 回答