Добавить корневую папку на URL используя Regex - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь преобразовать любой URL в PHP и добавить в него корневую папку с помощью регулярных выражений.

До:

http://domainNamehere.com/event/test-event-in-the-future/

После:

http://domainNamehere.com/es/event/test-event-in-the-future/

Есть идеи?

Ответы [ 5 ]

0 голосов
/ 05 октября 2011

Это самый лаконичный способ, которым я мог придумать, как это сделать.

$new_url = preg_replace('#(?<=\w)(?=/)#', '/en', $url, 1);

Он вставит все, что вы указали во втором параметре, в строку непосредственно перед первой косой чертой, которая также имеетисходящий буквенно-цифровой символ.

Протестировано с PHP 5.3.6

0 голосов
/ 05 октября 2011

Не проверено:

$url = preg_replace('#(?<=^[a-z]+://[^/]+/)#i', "es/", $url);

Используйте '#' для разграничения регулярного выражения, чтобы не было необходимости экранировать косую черту.

(?<=...) ищет совпадение для [a-z]://[^/]+/ без включения в соответствующую строку.

[a-z]+://[^/]/ соответствует последовательности букв, за которыми следует ://, за которыми следуют не косая черта, а затем косая черта.Это будет обрабатывать все веб-протоколы, в частности http и https.

Небольшой i делает поиск нечувствительным к регистру.

Замена просто вставляет es/ после совпадения.

0 голосов
/ 05 октября 2011

Если имя домена всегда одинаково, вы можете использовать:

$string = str_replace('domainNamehere.com', 'domainNamehere.com/es', $url);
0 голосов
/ 05 октября 2011

Простое решение без регулярных выражений:

$root_folder = 'es';
$url = "http://domainNamehere.com/event/test-event-in-the-future/";

$p = strpos($url, '/', 8);
$url_new = sprintf('%s/%s/%s', substr($url, 0, $p), $root_folder, substr($url, $p+1));

РЕДАКТИРОВАТЬ : JavaScript-решение почти такое же:

var root_folder = 'es';
var url = "http://domainNamehere.com/event/test-event-in-the-future/";

var p = url.indexOf('/', 8);
var url_new = url.substring(0,p) + '/' + root_folder + url.substring(p);

Конечно, дляживое приложение, вы также должны проверить, действительно ли p получает правильное назначенное значение (то есть, если слеш найден), потому что у вас может быть неверный URL в вашей входной или пустой строке.

0 голосов
/ 05 октября 2011
$url = 'http://domainNamehere.com/event/test-event-in-the-future/'; //or the function you use to grab it;
$url = str_replace('domainNamehere.com','domainNamehere.com/es', $url);

довольно грязный, но эффективный и без регулярных выражений, при условии, что ваша папка "es" всегда находится в этой позиции (я так думаю)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...