簡體   English   中英

如何在PHP中選擇字符串的特定部分?

[英]How do I select a certain part of a string in PHP?

我有一個網址數組。 URL看起來類似於:

https://maps.googleapis.com/maps/api/place/details/json?placeid= $ place_id&key = myAPIkey

$place_id是一個在每個網址中都會更改的變量。 我希望能夠僅選擇網址的這一部分。

因此,當我遍歷URL時,我希望它提取正在使用的URL的那一部分,並將其分配給我可以在代碼中使用的變量( $place )。 我已經看過strpos()和/或substr() ,但是我不知道如何使用它們,因為$place_id每次$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的值一致。

很抱歉,如果其中任何一個不正確,並且有任何我可以回答的問題或希望我改善問題的方式,我將很高興。

由於您在此處處理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>"]

正則表達式可以

$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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM