2015-07-21 4 views
0

У меня есть массив URL-адресов. URL-адреса, похожи на:Как выбрать определенную часть строки в PHP?

https://maps.googleapis.com/maps/api/place/details/json?placeid= ключ $ place_id & = myAPIkey

$place_id является переменной, которая изменяется в каждой ссылке. Я хочу, чтобы иметь возможность выбрать именно эту часть URL.

Поэтому, когда я просматриваю URL-адреса, я хочу, чтобы он извлекал эту часть URL-адреса, который я использую, и назначил ему переменную ($place), которую я могу использовать в своем коде. Я просмотрел strpos() и/или substr(), но я не знаю, как использовать их с тех пор, как изменяется $place_id. Я думаю, что длина $place_id всегда одна и та же, но я не уверен на 100%, поэтому было бы предпочтительным решение, работающее на разной длине.

В качестве альтернативы, у меня уже есть несколько $ place_ids в массиве. Я генерации массив URL-адресов с помощью

foreach ($place_ids as $place_id) { 
    array_push(
     $urls, 
     "https://maps.googleapis.com/maps/api/place/details/json?placeid=$place_id&key=myAPIkey" 
    ); 
} 

Я затем с помощью

foreach ($urls as $url){} 

в цикле через этот массив. Если бы я мог проверить, чтобы значение $place_id совпало со значением URL-адреса либо с помощью какой-либо проверки, либо с использованием их позиции в массиве, который тоже работал бы.

Прошу прощения, если что-либо из этого неверно, и если есть какие-либо вопросы, на которые я могу ответить или способы улучшить мой вопрос, я был бы счастлив.

ответ

0

Регулярное выражение будет делать

$match = array(); 
$url = "https://maps.googleapis.com/maps/api/place/details/json?placeid=346758236546&key=myAPIkey"; 
preg_match('/[?&]placeid=([^&]+)(?:$|.*)/', $url, $match); 
var_dump($match[1]); // string(12) "346758236546" 
+0

Это дает мне разобрана ошибка, я не уверен, почему. Прости, что я довольно новичок в этом. –

+0

@JosephGriffen Точка с запятой отсутствовала во второй строке. – SeinopSys

+0

Спасибо, что это работает сейчас. –

4

Поскольку вы имеете дело с URL-адресами здесь, вы, вероятно, захотите использовать встроенные помощники PHP, parse_url() и parse_str().

Например, вы можете разделить параметры GET с parse_url и затем извлечь каждый аргумент в массив с parse_str:

$url = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=<arg1>&key=<arg2>'; 
$args = []; 
$query = parse_url($url, PHP_URL_QUERY); 
parse_str($query, $args); 
// args => ["placeid" => "<arg1>", "key" => "<arg2>"] 
Смежные вопросы