输入字段显示带引号的 URL
input field showing an URL with quotes
我必须将一些维基百科 URL 存储到 MariaDB 数据库中。
碰巧有些 URL 包含引号,例如:
https://en.wikipedia.org/wiki/%22Heroes%22
所以我使用 urlencode()
将它们存储为 "en.wikipedia.org%2Fwiki%2F%22Heroes%22"
。
如果我 urldecode() 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','"', $url);
$url_input = urldecode($tmp);
echo "<input type=\"text\" value=\"$url_input\" />";
$url_input
的值可以作为 <a href
锚点正常工作,然后使用 FILTER_SANITIZE_URL
和 urlencode()
过滤来自表单的查询以将其存储在数据库。
有更好的方法吗?
只需使用 htmlspecialchars() 而不是 str_replace()
$url = 'en.wikipedia.org%2Fwiki%2F%22Heroes%22'; // it comes in this way from the DB
//$tmp = str_replace('%22','"', $url);
$url_input = htmlspecialchars(urldecode($url));
echo "<input type=\"text\" value=\"$url_input\" />";
我认为它会比这个更好用
我必须将一些维基百科 URL 存储到 MariaDB 数据库中。
碰巧有些 URL 包含引号,例如:
https://en.wikipedia.org/wiki/%22Heroes%22
所以我使用 urlencode()
将它们存储为 "en.wikipedia.org%2Fwiki%2F%22Heroes%22"
。
如果我 urldecode() 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','"', $url);
$url_input = urldecode($tmp);
echo "<input type=\"text\" value=\"$url_input\" />";
$url_input
的值可以作为 <a href
锚点正常工作,然后使用 FILTER_SANITIZE_URL
和 urlencode()
过滤来自表单的查询以将其存储在数据库。
有更好的方法吗?
只需使用 htmlspecialchars() 而不是 str_replace()
$url = 'en.wikipedia.org%2Fwiki%2F%22Heroes%22'; // it comes in this way from the DB
//$tmp = str_replace('%22','"', $url);
$url_input = htmlspecialchars(urldecode($url));
echo "<input type=\"text\" value=\"$url_input\" />";
我认为它会比这个更好用