字符串:
https://fakedomain.com/2017/07/01/the-string-i-want-to-get/
代码:
$url = 'https://fakedomain.com/2017/07/01/the-string-i-want-to-get/';
$out = [];
preg_match('\/\d{4}\/\d{2}\/\d{2}(.*)', $url, $out);
// At this point $out is empty...
// Also... I tried this (separately)
$keywords = preg_split("\/\d{4}\/\d{2}\/\d{2}(.*)", $url);
// also $keywords is empty...
我已经在外部对正则表达式进行了测试,但它确实有效。我想拆分/the-string-i-want-to-get/
字符串。我究竟做错了什么?
答案 0 :(得分:2)
我不会使用正则表达式。在这种情况下,最好使用parse_url
和其他一些帮助,例如trim
和explode
。
<?php
$url = 'https://fakedomain.com/2017/07/01/the-string-i-want-to-get/';
$parsed = parse_url($url);
$Xploded = explode('/',trim($parsed['path'],'/'));
print $Xploded[count($Xploded)-1];
// outputs: the-string-i-want-to-get
答案 1 :(得分:1)
有一个功能:
echo basename($url);
答案 2 :(得分:0)
preg_split
通过正则表达式拆分字符串。用正则表达式拆分给定的字符串。
您的$url
将按日期分割。这不是你需要做的事情:
<?php
$url = 'https://fakedomain.com/2017/07/01/the-string-i-want-to-get/';
$out = [];
preg_match('/\/\d{4}\/\d{2}\/\d{2}(.*)/', $url, $out);
// See here...
var_dump($out);
您将获得两个元素的数组:
array(2) {
[0]=>
string(37) "/2017/07/01/the-string-i-want-to-get/"
[1]=>
string(26) "/the-string-i-want-to-get/"
}