PHP Использование RegEx для получения подстроки строки - PullRequest
47 голосов
/ 09 мая 2011

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

Я анализирую веб-страницу, и мне нужно извлечь числовое значение из строки, строка выглядит так

producturl.php?id=736375493?=tm

Мне нужно получить эту часть строки:

736375493

Спасибо, Аарон

Ответы [ 4 ]

66 голосов
/ 10 мая 2011
$matches = array();
preg_match('/id=([0-9]+)\?/', $url, $matches);

Это безопасно, если формат изменяется.Ответ slandau не сработает, если у вас есть другие цифры в URL.

18 голосов
/ 10 мая 2011
<?php
$string = "producturl.php?id=736375493?=tm";
preg_match('~id=(\d+)~', $string, $m );
var_dump($m[1]); // $m[1] is your string
?>
6 голосов
/ 09 мая 2011
$string = "producturl.php?id=736375493?=tm";
$number = preg_replace("/[^0-9]/", '', $string);
0 голосов
/ 27 мая 2019

К сожалению, у вас неверно сформированная строка запроса URL, поэтому метод регулярного выражения является наиболее подходящим. Смотри что я имею в виду .

Нет необходимости в захвате групп. Просто сопоставьте id=, затем забудьте эти символы с \K, а затем выделите один или несколько следующих цифровых символов.

Код ( Демо )

$str = 'producturl.php?id=736375493?=tm';
echo preg_match('~id=\K\d+~', $str, $out) ? $out[0] : 'no match';

Выход:

736375493
...