Ответ 1
$matches = array();
preg_match('/id=([0-9]+)\?/', $url, $matches);
Это безопасно, если формат изменяется. ответ slandau не будет работать, если у вас когда-либо были другие номера в URL-адресе.
Я ищу способ разобрать подстроку с помощью PHP и натолкнулся на preg_match, но я не могу найти правильное правило, которое мне нужно.
Я анализирую веб-страницу и мне нужно взять числовое значение из строки, строка похожа на эту
producturl.php?id=736375493?=tm
Мне нужно иметь возможность получить эту часть строки:
736375493
Спасибо Аарон
$matches = array();
preg_match('/id=([0-9]+)\?/', $url, $matches);
Это безопасно, если формат изменяется. ответ slandau не будет работать, если у вас когда-либо были другие номера в URL-адресе.
<?php
$string = "producturl.php?id=736375493?=tm";
preg_match('~id=(\d+)~', $string, $m );
var_dump($m[1]); // $m[1] is your string
?>
$string = "producturl.php?id=736375493?=tm";
$number = preg_replace("/[^0-9]/", '', $string);
К сожалению, у вас есть неверно сформированная строка запроса URL, поэтому метод регулярных выражений является наиболее подходящим. Посмотри, что я имею в виду.
Нет необходимости в захвате групп. Просто сопоставьте id=
затем забудьте эти символы с \K
, а затем выделите один или несколько следующих цифровых символов.
Код (Демо)
$str = 'producturl.php?id=736375493?=tm';
echo preg_match('~id=\K\d+~', $str, $out) ? $out[0] : 'no match';
Выход:
736375493