从PHP中的URL字符串中删除一些错误字符

时间:2014-08-22 14:20:32

标签: php string replace preg-replace str-replace

我有一个关于php的非常简单的问题。

想象一下,我的这个字符串包含一个URL:

$string = "http://www.tabnak.ir/fa/news/428050/%D8%AA%DA%A9%D9%81%DB%8C%D8%B1-%D9%85%D8%AA%D9%82%D8%A7%D8%A8%D9%84-%D8%AF%D8%A7%D8%B9%D8%B4-%D9%88-%D9%85%D9%81%D8%AA%DB%8C-%D8%A7%D8%B9%D8%B8%D9%85-%D8%B3%D8%B9%D9%88%D8%AF%DB%8C";

我想删除不好的字符,如:

%D8%AA%DA%A9%D9%81%DB%8C%D8%B1-%D9%85%D8%AA%D9%82%D8%A7%D8%A8%D9%84-%D8%AF%D8%A7%D8%B9%D8%B4-%D9%88-%D9%85%D9%81%D8%AA%DB%8C-%D8%A7%D8%B9%D8%B8%D9%85-%D8%B3%D8%B9%D9%88%D8%AF%DB%8C

所以我需要这个:

$string = "http://www.tabnak.ir/fa/news/428050/";

我如何用PHP做到这一点?

我想使用一些代码来删除它们,就像preg match一样,但它会向我返回错误的url并删除更多内容。

3 个答案:

答案 0 :(得分:2)

它看起来像 URL编码版本。如果您只需要news/id,则可以使用substr()获取最后/位置并删除其他位置。

substr($string, 0, strrpos($string, "/") + 1)

这会返回以下输出:

"http://www.tabnak.ir/fa/news/428050/"

答案 1 :(得分:1)

它们不是bad,它们只是编码字符。但是对于您的格式,您可以

 if(substr($string,-1)!="/")     // Updated after your comment
     echo substr($string,0,strrpos($string,'/')+1);
 else
    echo $string;

<强> Fiddle

<强> New Fiddle

答案 2 :(得分:0)

如果您尝试做的是从最后一个斜杠收集http中的文本,那么前面的代码是一个很好的选择(substr($ string,0,strrpos($ string,&# 34; /&#34;)+ 1))。这会解决您的问题,还是需要不同的东西?