假设我想匹配一个可能包含或不包含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并将其重新组合在一起。