3

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

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

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

我试过这种模式。我知道它将匹配替换所有内容。所以请建议我,如何做到这一点。

4

2 回答 2

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"
于 2013-10-30T08:34:00.907 回答
0

据我了解,您只需将第一部分替换为“”(空字符串)。所以你需要像 https?://(www.) 这样的模式?

即 preg_replace("https?://(www.)?", " http://www.example.com ", "")

于 2013-10-30T08:46:46.873 回答