Получение идентификатора из строки. Регулярная проблема - PullRequest
0 голосов
/ 28 июня 2010

Я пытаюсь получить идентификатор из строки URL.

Я пытаюсь использовать следующий код: -

ОТ:

<url>http://www.monkeys.com/monkey.php?id=24</url>

Я хочучтобы получить '24' с: -

$ID = preg_replace($url, '/^<url>.*\?id=(.*)<\/url>$/', '\1');

Любая помощь будет высоко ценится - я уверен, что это обычная проблема, но я нахожу сбивающее с толку регулярное выражение.

Ответы [ 3 ]

3 голосов
/ 28 июня 2010

Regex - неподходящий инструмент для работы. Используйте

  • parse_str - Разбирает строку на переменные и
  • parse_url - Разобрать URL и вернуть его компоненты

Пример:

$url = "http://www.monkeys.com/monkey.php?id=24";
parse_str(parse_url($url, PHP_URL_QUERY), $parts);
var_dump( $parts ); // 24

Получение URL-адреса из элемента <URL> должно быть тривиальным. DOM ваш друг. См. Другие вопросы, касающиеся чтения XML с PHP , а также эту статью, почему вам не следует использовать Regex для анализа HTML .

0 голосов
/ 28 июня 2010

Если идентификатор только числовой:

/\?id=(\d+)/

Если после идентификатора нет ничего

/\?id=(.*)/
0 голосов
/ 28 июня 2010

Вы можете использовать это регулярное выражение:

/^[^?]+\?id=(.*).*$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...