假设我想匹配一个可能包含或不包含http://的URL https://。当我更换它时,如果它在那里,我想https://在前面有,但如果它是http://或者什么都没有,我想http://在一开始就拥有。
我不知道如何用 preg_match 表达式来解决这个问题,或者对于非 PHP 倾向,一个搜索和替换 PHP 函数。
假设我想匹配一个可能包含或不包含http://的URL https://。当我更换它时,如果它在那里,我想https://在前面有,但如果它是http://或者什么都没有,我想http://在一开始就拥有。
我不知道如何用 preg_match 表达式来解决这个问题,或者对于非 PHP 倾向,一个搜索和替换 PHP 函数。
您可以使用preg_replace_callback, 并编写一个函数来做到这一点。
如果你想要一个正则表达式解决方案,这样的东西应该可以工作。
preg_replace('|^(?:http(s)?://)?(.+)$|', 'http\\1://\\2', $url);
虽然我可能会使用parse_url并将其重新组合在一起。