我有一大堆的链接,看起来像下面这样
/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-gb
/en-gb/admin
/eb-gb/admin/content
可能更好地在这里使用的preg_replace,因为我们在这里看字符串的开头。
$string = preg_replace("/^(\/?)([a-z]{2})/", "$1$2-".$country, $string);
你可以用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
$orig
可以是字符串或字符串的数组。这将在字符串中的任何地方代替它,而不是仅仅在开始的:
$lang = "en";
$country = "gb";
$orig = str_replace("$lang", "$lang-$country", $orig);
如果你只需要在开始更换:
$orig = preg_replace("#^/$lang#", "/$lang-$country", $orig);
您可以使用preg_replace
。要在一开始只匹配模式,使用下面的正则表达式:
^\/(en)\/
如果你想匹配所有两个字符串(与wordlike字符),你可以使用:
^\/(\w{2})\/
的两个字符是随后在所述第一匹配组$1
。