我有此链接,我只需要使用该链接中的数字即可。 我将如何提取它们?
我没有找到适用于Codepcetion的答案。
https://www.my-website.com/de/booking/extras#tab-nav-extras-1426
我有点累了。
$I->grabFromCurrentUrl('\d+');
但是我不会工作。
有什么想法吗?
答案 0 :(得分:2)
您可以使用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"
答案 1 :(得分:2)
留在框架中
manual明确指出:
grabFromCurrentUrl
针对当前URI执行给定的正则表达式,并 返回第一个捕获组。如果未提供参数,则 返回完整的URI。
由于您没有使用任何捕获组(...)
,因此不会返回任何内容。
尝试一下:
$I->grabFromCurrentUrl('~(\d+)$~');
末尾的$
是可选的,它只是指出字符串应以模式结尾。
还要注意,为方便起见,为方便起见,平时用(/
代替的分隔符由波浪号(~
)代替,因为输入字符串有很大的机会包含多个正向斜线。自定义pattern delimiters在regexp中是完全标准的,正如@Naktibalda在this answer中指出的那样。
答案 2 :(得分:0)
在preg_match()
之后使用parse_url()
的变体:
$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"