正则表达式前3个字母,多数民众赞成以某种方式的东西

问题描述 投票:-1回答:4

我有一大堆的链接,看起来像下面这样

/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
php regex
4个回答
2
投票

可能更好地在这里使用的preg_replace,因为我们在这里看字符串的开头。

$string = preg_replace("/^(\/?)([a-z]{2})/", "$1$2-".$country, $string);

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 

0
投票

$orig可以是字符串或字符串的数组。这将在字符串中的任何地方代替它,而不是仅仅在开始的:

$lang = "en";
$country = "gb";

$orig = str_replace("$lang", "$lang-$country", $orig);

如果你只需要在开始更换:

$orig = preg_replace("#^/$lang#", "/$lang-$country", $orig);

0
投票

您可以使用preg_replace。要在一开始只匹配模式,使用下面的正则表达式:

^\/(en)\/

如果你想匹配所有两个字符串(与wordlike字符),你可以使用:

^\/(\w{2})\/

的两个字符是随后在所述第一匹配组$1

© www.soinside.com 2019 - 2024. All rights reserved.