显示带引号的URL的输入字段


input field showing an URL with quotes

我必须将一些维基百科URL存储到MariaDB数据库中。

碰巧有些URL包含引号,比如这个:

https://en.wikipedia.org/wiki/%22Heroes%22

所以我使用CCD_ 1将它们存储为CCD_。

如果我对URL进行URL解码(),以在<input type="text">字段中显示它,而不显示所有的%(这会吓到不熟练的用户),则引号会打断input值。

我找到了这个变通方法,以更舒适的方式显示结果:

$url = 'en.wikipedia.org%2Fwiki%2F%22Heroes%22'; // it comes in this way from the DB
$tmp = str_replace('%22','&quot;', $url);
$url_input = urldecode($tmp);
echo "<input type='"text'" value='"$url_input'" />";

$url_input的值作为<a href锚点平稳工作,然后使用FILTER_SANITIZE_URLurlencode()对来自表单的查询进行过滤,以将其存储在DB中。

有更好的方法吗?

只需使用htmlspecialchar()而不是str_replace()

$url = 'en.wikipedia.org%2Fwiki%2F%22Heroes%22'; // it comes in this way from the DB
//$tmp = str_replace('%22','&quot;', $url);
$url_input = htmlspecialchars(urldecode($url));
echo "<input type='"text'" value='"$url_input'" />";

我认为它会比这个更好