我有一个关于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并删除更多内容。
答案 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))。这会解决您的问题,还是需要不同的东西?