我有一堆下面的链接
/en
/en/admin
/en/admin/content
/en/admin/content/paragraphs
/en/admin/structure
/en/admin/structure/block
/en/admin/structure/contact
我想将/ en的出现替换为/ en-gb(/ en- $ country),并且gb一词位于变量$ country中。
最终结果将是
/en-gb
/en-gb/admin
/eb-gb/admin/content
答案 0 :(得分:2)
您可以使用str_replace轻松做到这一点:
$string = str_replace('/en/', '/en-'.$country.'/', $string);
在这里,以防最短的正则表达式版本:
$string = preg_replace('/^\/[a-z]{2}/', '$0-'.$country, $string);
说明:
^ look at the begin of the string
\/ look for an / (\ is for escaping)
[a-z]{2} look for two characters a-z
答案 1 :(得分:2)
在这里使用preg_replace可能更好,因为我们正在这里查看字符串的开头。
$string = preg_replace("/^(\/?)([a-z]{2})/", "$1$2-".$country, $string);
答案 2 :(得分:0)
您可以使用preg_replace
。要仅匹配开头的模式,请使用以下正则表达式:
^\/(en)\/
如果要匹配所有两个字符串(带有单词字符),可以使用:
^\/(\w{2})\/
然后,这两个字符在第一个匹配组$1
中。
答案 3 :(得分:0)
$orig
可以是字符串或字符串数组。这将替换它在字符串中的任何位置,而不仅仅是在开头:
$lang = "en";
$country = "gb";
$orig = str_replace("$lang", "$lang-$country", $orig);
如果只需要在开始时更换:
$orig = preg_replace("#^/$lang#", "/$lang-$country", $orig);