我使用htmlentities删除请求网址中的特殊字符,但不起作用 代码对应于调用我的网址是:
<select name="article">
<option value='Tout' >Tout</option>
echo '<option value="'.htmlentities($rowact['article']).'" ';
if(...))
{
{echo 'selected';}
}
echo'>'.htmlentities($rowact['article']).' </option>';
url:http://mondomain.com/+Bar%252C+caf%25C3%25A9%2
请提出任何建议,提前致谢
答案 0 :(得分:1)
htmlentities不适用于编码网址 使用urlencode对网址中的特殊字符进行编码
答案 1 :(得分:0)
使用htmlentities你可以转换html实体,但要编码你需要使用urlencode函数的url参数。
<select name="article">
<option value='Tout' >Tout</option>
echo '<option value="'.urlencode($rowact['article']).'" ';
if(...))
{
{echo 'selected';}
}
echo'>'.htmlentities($rowact['article']).' </option>';
答案 2 :(得分:0)
htmlentities将所有适用的字符转换为HTML实体(请参阅http://www.php.net/htmlentities)。 如果您只想允许某些字符,请使用正则表达式,例如:
preg_replace("/([^a-zA-Z0-9\ ]*)/","",$rowact['activite'])
此示例仅允许字母(大写和小写),数字和空格。 有关更多信息,请点击此处:http://www.php.net/manual/en/reference.pcre.pattern.syntax.php
编辑:
即使它不是最好的解决方案,您也可以使用preg_replace替换特定的特殊字符,如下面的代码所示:
$find = array();
$find[] = '/[\"]/';
$find[] = '/[\&]/';
$find[] = '/[\<]/';
$find[] = '/[\>]/';
$replace = array();
$replace[] = """;
$replace[] = "&";
$replace[] = "<";
$replace[] = ">";
preg_replace($find,$replace,$rowact['activite']);