无法从网址中删除特殊字符%

时间:2017-11-20 07:57:35

标签: php

我正在尝试从网址中删除特殊字符Iterable 我尝试了很多解决方案,比如string_replace等,但没有成功。

我不知道我的代码有什么问题:

%

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

str_replace应该做到这一点 以下代码将查找“%”的所有实例,并将其替换为空白字符串,从而有效地将其从字符串中删除。

trim将从字符串的开头和结尾删除字符。因此,如果示例位于字符串的开头或结尾,则您的示例将仅删除%

<?php
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($url,'pages') !== false) {
    $url = str_replace("%", "", $url);
}
?>

要考虑的一件事是,如果您在网址中有空格,那么您最终会在网址中留下20

这取决于URL的编码方式以及某些字符的编码方式 See this link了解更多信息。 “代码点(十六进制)”列是您查看编码版本所需的内容。空格字符是一个常见示例,编码为%20因此,删除%会使20离开,这可能会导致网址出现问题。

根据上述说明,如果您要删除空格和任何数字,则可以通过以下方式使用RegEx:

$url = preg_replace("/%\d+", "", $url);

答案 1 :(得分:1)

根据str_replace函数的此文档,您可以使用

更改代码
<?php
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($url,'pages') !== false) {
    $url = str_replace("%", "", $url);
}
?>

答案 2 :(得分:0)

trim() - 从字符串的开头和结尾去掉空格(或其他字符)

此函数返回一个字符串,其中从str的开头和结尾剥去了空格。如果没有第二个参数,trim()将删除这些字符:

  • &#34; &#34; (ASCII 32(0x20)),一个普通的空间。
  • &#34; \吨&#34; (ASCII 9(0x09)),一个标签。
  • &#34; \ n&#34; (ASCII 10(0x0A)),新行(换行符)。
  • &#34; \ R&#34; (ASCII 13(0x0D)),回车。
  • &#34; \ 0&#34; (ASCII 0(0x00)),NUL字节。
  • &#34; \ X0B&#34; (ASCII 11(0x0B)),垂直制表符。

FOR网址

您可以使用urldecode转换网址字符串。

echo urldecode($your_url);

或使用此功能清理您的网址:

function PerfectURL($your_url) {
  $perfect_url = strtolower(preg_replace( array('/[^a-z0-9\- ]/i', '/[ \-]+/'), array('', '-'), $your_url));
            return $perfect_url;
     }

或仅%

替换''
str_replace("%", "", $your_url);