使用 preg_replace 在字符串中的特定位置插入斜线
Insert slash at specific place in string with preg_replace
我正在尝试编写一个函数,将反斜杠插入损坏的 URL 中,由于某种原因在 http 之后缺少第二个反斜杠,我只想 return 固定版本, 例如
addSlash(http:/example.net) -> http://example.net
addSlash(https:/example.net`) -> https://example.net
我认为这可以用 preg_replace 一行代码解决,但我无法让它工作。使用 $url = 'http:/example.net' 和
preg_replace("@^(https?:)(.*?)@", "/", $url);
我回来了 / /example.net
,好像 'http' 不匹配并放入
.
有什么建议吗?如果可能的话,我想避免回调和匿名函数,因为在 PHP.
的旧版本上这应该是 运行
/^(https:|http:)?[\/](?![\/])(.*)/
类似的东西应该 work 适合你。
$re = "/^(https:|http:)?[\/](?![\/])(.*)/mi";
$str = "https:/regex101.com\nhttp:/regex101.com\nhttps://regex101.com";
$result = preg_replace($re, '//' , $str);
var_dump($result);
这应该有效:
preg_replace('@^(https*:)(/.*)@', '/', $url);
甚至:
preg_replace('@^(https*:)@', '/', $url);
我正在尝试编写一个函数,将反斜杠插入损坏的 URL 中,由于某种原因在 http 之后缺少第二个反斜杠,我只想 return 固定版本, 例如
addSlash(http:/example.net) -> http://example.net
addSlash(https:/example.net`) -> https://example.net
我认为这可以用 preg_replace 一行代码解决,但我无法让它工作。使用 $url = 'http:/example.net' 和
preg_replace("@^(https?:)(.*?)@", "/", $url);
我回来了 / /example.net
,好像 'http' 不匹配并放入 .
有什么建议吗?如果可能的话,我想避免回调和匿名函数,因为在 PHP.
的旧版本上这应该是 运行/^(https:|http:)?[\/](?![\/])(.*)/
类似的东西应该 work 适合你。
$re = "/^(https:|http:)?[\/](?![\/])(.*)/mi";
$str = "https:/regex101.com\nhttp:/regex101.com\nhttps://regex101.com";
$result = preg_replace($re, '//' , $str);
var_dump($result);
这应该有效:
preg_replace('@^(https*:)(/.*)@', '/', $url);
甚至:
preg_replace('@^(https*:)@', '/', $url);