使用 codeception 仅从 link 中提取数字
Extract only numbers from link with codeception
我有这个 link,我只需要处理那个 link 中的数字。
我将如何提取它们?
我没有找到任何适用于编码解码的答案。
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"
使用 preg_match()
after 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"
保持在框架内:
manual 明确表示:
grabFromCurrentUrl
Executes the given regular expression against the current URI and
returns the first capturing group. If no parameters are provided, the
full URI is returned.
由于您没有使用任何捕获组 (...)
,因此不会返回任何内容。
试试这个:
$I->grabFromCurrentUrl('~(\d+)$~');
末尾的$
是可选的,它只是声明字符串应该以模式结尾。
另请注意,为方便起见,您通常使用的开始和结束模式定界符 (/
) 已替换为代字号 (~
) 字符,因为输入字符串很可能包含多个正斜杠。自定义 pattern delimiters are completely standard in regexp, as @Naktibalda pointed it out in .
我有这个 link,我只需要处理那个 link 中的数字。 我将如何提取它们?
我没有找到任何适用于编码解码的答案。
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"
使用 preg_match()
after 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"
保持在框架内:
manual 明确表示:
grabFromCurrentUrl
Executes the given regular expression against the current URI and returns the first capturing group. If no parameters are provided, the full URI is returned.
由于您没有使用任何捕获组 (...)
,因此不会返回任何内容。
试试这个:
$I->grabFromCurrentUrl('~(\d+)$~');
末尾的$
是可选的,它只是声明字符串应该以模式结尾。
另请注意,为方便起见,您通常使用的开始和结束模式定界符 (/
) 已替换为代字号 (~
) 字符,因为输入字符串很可能包含多个正斜杠。自定义 pattern delimiters are completely standard in regexp, as @Naktibalda pointed it out in