簡體   English   中英

僅從具有代碼接收的鏈接中提取數字

[英]Extract only numbers from link with codeception

我有此鏈接,我只需要使用該鏈接中的數字即可。 我將如何提取它們?

我沒有找到適用於Codepcetion的答案。

https://www.my-website.com/de/booking/extras#tab-nav-extras-1426

我有點累了

 $I->grabFromCurrentUrl('\d+');

但是我不會工作。

有任何想法嗎 ?

您可以使用parse_url()解析整個URL,然后提取最感興趣的部分。 之后,您可以使用正則表達式從字符串中僅提取數字。

$url = "https://www.my-website.com/de/booking/extras#tab-nav-extras-1426";
$parsedUrl = parse_url($url);

$fragment = $parsedUrl['fragment']; // Contains: tab-nav-extras-1426

$id = preg_replace('/[^0-9]/', '', $fragment);

var_dump($id); // Output: string(4) "1426"

保持框架內:

手冊明確指出:

grabFromCurrentUrl

針對當前URI執行給定的正則表達式,並返回第一個捕獲組 如果未提供任何參數,則返回完整的URI。

由於您沒有使用任何捕獲組(...) ,因此不會返回任何內容。

嘗試這個:

    $I->grabFromCurrentUrl('~(\d+)$~');

末尾的$是可選的,它只是指出字符串應以模式結尾。

還要注意,為方便起見,通常將使用( / )的打開和關閉模式定界符替換為波浪號( ~ )字符,因為輸入字符串很有可能包含多個正斜杠。 自定義模式定界符在regexp中是完全標准的,正如@Naktibalda在此答案中指出的那樣。

parse_url()之后使用preg_match()變體:

$url = "https://www.my-website.com/de/booking/extras#tab-nav-extras-1426";

preg_match('/\d+$/', parse_url($url)['fragment'], $id);

var_dump($id[0]);
// Outputs: string(4) "1426"

暫無
暫無

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

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