字符串替换为通配符

时间:2014-09-30 10:47:22

标签: php regex

我想要用http://localhost:9000/category替换字符category.html,即在/category之前删除所有内容并添加.html

但无法通过str_replace找到解决方法。

4 个答案:

答案 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

DEMO

$input = "http://localhost:9000/category";
echo preg_replace("~.*/(.+)~", '$1.html', $input)

输出:

category.html

答案 2 :(得分:1)

.*\/(\S+)

试试这个。$1.html。见。演示。

http://regex101.com/r/nA6hN9/43

答案 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';
?>