регулярное выражение для извлечения значения параметра строки запроса из URL в PHP - PullRequest
1 голос
/ 24 октября 2011

Мне нужно извлечь идентификатор элемента из URL;шаблон такой & R = 10031004 &, я имею в виду, мне нужно извлечь строку внутри & R = и другую &

Это то, что у меня есть, но я продолжаю получать ошибки.

preg_match('^[&R=]+ &$',
"http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches);
$host = $matches[0];

echo $host;

Ответы [ 7 ]

1 голос
/ 24 октября 2011

Используйте это:

preg_match('/&R\=(.*?)&/i', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches);
echo $matches[1]; // will echo 10031004
0 голосов
/ 24 октября 2011
$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" ];

Я не мог проверить это, но оно должно работать.

0 голосов
/ 24 октября 2011

Я мог бы также бросить другой на тебя.Этот будет соответствовать любому символу между R =, которому предшествует?или & и заканчивая & или #.

preg_match('/[?&]R=([^&#]+)/', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches);
0 голосов
/ 24 октября 2011
$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}.

Это регулярное выражение должно быть достаточно устойчивым и соответствовать всем этим:

0 голосов
/ 24 октября 2011
if (preg_match('/(?<=&R=).*?(?=&)/', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $regs)) {
    $result = $regs[0];
}

Используйте это.

0 голосов
/ 24 октября 2011

ну, во-первых, может быть, я могу упростить вашу задачу,

это URL из скрипта?

тогда вам следует проверить содержимое $ _GET, где вы найдете переменную Rс содержанием 10031004 ...

$item_id = $_GET['R']; 
echo $item_id; 
0 голосов
/ 24 октября 2011
preg_match('#R=([0-9]+)#is', "http://www.lapdirecciondemario.com/items.php&R=10031004&", $matches);
echo $matches[1]; # 10031004
...