регулярные выражения первых 3 букв, которые определенным образом к чему-то - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть несколько ссылок, которые выглядят следующим образом:

/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в переменной стране $.

Конечным результатом будет, например,

/en-gb
/en-gb/admin
/eb-gb/admin/content

Ответы [ 4 ]

0 голосов
/ 04 февраля 2019

$orig может быть строкой или массивом строк.Это заменит его в любом месте строки, а не только в начале:

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

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

Если вам нужно заменить только в начале:

$orig = preg_replace("#^/$lang#", "/$lang-$country", $orig);
0 голосов
/ 04 февраля 2019

Вы можете использовать preg_replace.Чтобы сопоставить только шаблон в начале, используйте следующее регулярное выражение:

^\/(en)\/

Если вы хотите сопоставить все две строки символов (со словесными символами), вы можете использовать:

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

Два символа находятся в первой соответствующей группе $1.

0 голосов
/ 04 февраля 2019

Вероятно, лучше использовать здесь preg_replace, потому что мы смотрим на начало строки здесь.

$string = preg_replace("/^(\/?)([a-z]{2})/", "$1$2-".$country, $string);
0 голосов
/ 04 февраля 2019

Вы можете легко сделать это с помощью 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...