繁体   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