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


preg_replace for particular pattern if not exist

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

  • http://www.example.com
  • https://in.example.com
  • http://uk.example.com
  • uk.example.com

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

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

我尝试了这种模式。我知道它会匹配取代一切。所以请建议我,如何做到这一点。

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"

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

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