Мне нужно извлечь идентификатор элемента из URL;шаблон такой & R = 10031004 &, я имею в виду, мне нужно извлечь строку внутри & R = и другую &
Это то, что у меня есть, но я продолжаю получать ошибки.
preg_match('^[&R=]+ &$', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches); $host = $matches[0]; echo $host;
Используйте это:
preg_match('/&R\=(.*?)&/i', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches); echo $matches[1]; // will echo 10031004
$url = "http://www.lapdirecciondemario.com/items.php&R=10031004&"; $urlQueryParts = array(); parse_str(parse_url($url, PHP_URL_QUERY), $urlQueryParts); if(isset($urlQueryParts[ "R" ])) $urlQueryParts[ "R" ];
Я не мог проверить это, но оно должно работать.
Я мог бы также бросить другой на тебя.Этот будет соответствовать любому символу между R =, которому предшествует?или & и заканчивая & или #.
preg_match('/[?&]R=([^&#]+)/', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches);
$url = 'http://www.lapdirecciondemario.com/items.php&R=10031004&'; preg_match('/(&|\?)R=([0-9]+)/i', $url, $matches); echo $matches[2];
В отличие от других ответов, это также будет соответствовать, если параметру R предшествует ? вместо &.Если вы знаете больше о длине числа, вы можете заменить + после [0-9] на {min,max}.
R
?
&
+
[0-9]
{min,max}
Это регулярное выражение должно быть достаточно устойчивым и соответствовать всем этим:
if (preg_match('/(?<=&R=).*?(?=&)/', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $regs)) { $result = $regs[0]; }
Используйте это.
ну, во-первых, может быть, я могу упростить вашу задачу,
это URL из скрипта?
тогда вам следует проверить содержимое $ _GET, где вы найдете переменную Rс содержанием 10031004 ...
$item_id = $_GET['R']; echo $item_id;
preg_match('#R=([0-9]+)#is', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches); echo $matches[1]; # 10031004