Я должен хранить некоторые 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\" />";
Я думаю, что это будет работать лучше, чем это
Других решений пока нет …