【问题标题】:How to eliminate special characters from url?如何消除url中的特殊字符?
【发布时间】:2015-03-06 17:36:57
【问题描述】:

我有以下网址,其中 var_a 应该始终是一个数字。我也不知道 var_a 会有多少:

http://localhost/url.php?var_a[]=298&var_a[]=299

如果用户在 url 中写入特殊字符,如何防止出错?

我已经这样做了:

$data =  preg_replace('/[^0-9\']/', '',$_GET['var_a']);
$data = str_replace("'", '', $data);

print_r ($data);// Array ( [0] => 298 [1] => 299 )
//This is ok, all number were printed

但我仍然收到# % & 等特殊字符的错误

例如

http://localhost/url.php?var_a[]=298&var_a[]=#299

print_r ($data);// Array ( [0] => 298 [1] => )
//299 was not printed!

我该如何解决这个问题?

【问题讨论】:

标签: php preg-replace special-characters


【解决方案1】:

据我所知,如果用户直接在 URL 中输入值,您将无法修复它。原因是这些字符在 URLS 中具有特殊含义:# 表示数据片段,% 表示 unicode 值,& 表示新变量。如果它来自表单,则可以使用的两个选项是使用 $_POST 值,或者在提交值之前使用 urlencode。 Pound sign (#) not working in PHP 有更多关于使用 urlencode 的信息。

【讨论】:

  • var_a 来自表单,但 $_POST 不是一个选项。是否可以在表单中使用 urlencode?​​span>
  • 我不相信你可以使用 PHP,但你可以使用 Javascript,就像使用表单验证器一样。
猜你喜欢
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 2010-09-21
  • 2010-10-06
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
相关资源
最近更新 更多