PHP RegEx Исключая две строки из строки - PullRequest
0 голосов
/ 24 мая 2018

После поиска различных других вопросов, чтобы попытаться решить это самостоятельно, я дошел до этого, но не могу понять, как добавить дополнительную строку.

// $url will actually be $_SERVER['REQUEST_URI']
$url = "/folder123/?id=foo"; // it could be "index.php?id=foo"

preg_replace_callback('#^/folder123/#', function($match) {
    return $match[1];
}, $url);

Ожидаемый результат: ? Id = foo

С моим текущим кодом я получу ожидаемый результат;Однако я не знаю, как также проверить на index.php.Мое намерение состоит в том, чтобы строка исключала эти две части.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я надеюсь, что это поможет вам:

$url = "index.php?id=foo22"; // it could be "index.php?id=foo"

preg_replace_callback('/(\?|\&).*/', function($match) {
    var_dump($match[0]) ;
}, $url);
0 голосов
/ 24 мая 2018

Чтобы сопоставить их обоих, вы можете использовать чередование , а затем \K для сброса начальной точки сообщенного совпадения.

^(?:/folder123/|index\.php)\K.*$

preg_replace_callback('#^(?:/folder123/|index\.php)\K.*$#', function($match) { return $match[0]; }, $url);

Демо

...