我想要用http://localhost:9000/category
替换字符category.html
,即在/category
之前删除所有内容并添加.html
。
但无法通过str_replace找到解决方法。
答案 0 :(得分:3)
您希望在这种情况下使用parse_url
:
$parts = parse_url($url);
$file = $parts['path'].'.html';
或者那条线上的东西。用它做一点实验。
Ismael Miguel建议使用这个较短的版本,我喜欢它:
$file = parse_url($url,PHP_URL_PATH).'.html';
比^*!$(\*)+
正则表达式好多了。
答案 1 :(得分:1)
使用preg_replace
代替str_replace
正则表达式:
.*\/(.+)
替换字符串:
$1.html
$input = "http://localhost:9000/category";
echo preg_replace("~.*/(.+)~", '$1.html', $input)
输出:
category.html
答案 2 :(得分:1)
答案 3 :(得分:0)
解决方案没有正则表达式:
<?php
$url = 'http://localhost:9000/category';
echo @end(explode('/',$url)).'.html';
?>
这会分割字符串并获取最后一部分,并附加.html
。
请注意,如果输入以/
结尾(例如:$url = 'http://localhost:9000/category/';
)
另请注意,这取决于非标准行为并且可以轻松更改,这只是作为一个单行程。您可以改为$parts=explode([...]); echo end($parts).'.html';
。
如果输入偶尔以/
结尾,我们可以这样做,以避免出现问题:
<?php
$url = 'http://localhost:9000/category/';
echo @end(explode('/',rtrim($url,'/'))).'.html';
?>