preg_replace表示特定模式(如果不存在)

时间:2013-10-30 08:28:40

标签: php regex

我有各种格式的网址输入。我想将所有转换为一种标准格式。下面几个示例输入。

从上面的所有输入中,我希望使用 www 转换为第一个(http://www.example.com)。所以我认为如果“www”不存在,我们可以替换字符串。

$pattern = '/((http?|https)\:\/\/)?([a-zA-Z]+)\.example.com\/[a-z]{2}\/[a-zA-Z0-9]{5,30}/i';

我试过这种模式。我知道它会匹配取代一切。所以请建议我,怎么做。

2 个答案:

答案 0 :(得分:1)

function to_standard_format($url) {
    $pattern = '#(https?://)?\w+\.example.com(?=[/\s]|$)#i';
    return preg_replace($pattern, 'http://www.example.com', $url);
}

var_dump(to_standard_format('http://www.example.com'));
var_dump(to_standard_format('https://in.example.com'));
var_dump(to_standard_format('http://uk.example.com'));
var_dump(to_standard_format('http://uk.example.com/blah'));
var_dump(to_standard_format('uk.example.com'));
var_dump(to_standard_format('http://www.example.com.au'));
var_dump(to_standard_format('uk.another-example.com'));

打印

string(22) "http://www.example.com"
string(22) "http://www.example.com"
string(22) "http://www.example.com"
string(27) "http://www.example.com/blah"
string(22) "http://www.example.com"
string(25) "http://www.example.com.au"
string(22) "uk.another-example.com"

答案 1 :(得分:0)

据我所知,你只需要用“”(空字符串)替换第一部分。所以你需要像https?://(www。)?

这样的模式

即。 preg_replace(“https?://(www。)?”,“http://www.example.com”,“”)