从开始和结束字符串中删除字符
Remove characters from beginning and end string
我只想从 URL 输出 MYID
。到目前为止我做了什么:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
echo substr($url, 0, strpos($url, "?out="));
输出:https://whatever.expamle.com/display/MYID
$url = preg_replace('#^https?://whatever.expamle.com/display/#', '', $url);
echo $url;
输出:MYID?out=1234567890?Browser=0?OS=1
我该如何合并呢?谢谢
对于更通用的解决方案,我们可以使用正则表达式 preg_match_all
:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
preg_match_all("/\/([^\/]+?)\?/", $url, $matches);
print_r($matches[1][0]); // MYID
当字符串始终是统一资源定位符 (URL) 时,就像您在问题中提出的那样,
给定以下字符串:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
你可以先解析它:
$parts = parse_url($url);
然后利用 MYID 是最后一个路径组件这一事实:
$str = preg_replace(
'~^.*/(?=[^/]*$)~' /* everything but the last path component */,
'',
$parts['path']
);
echo $str, "\n"; # MYID
然后根据您的需要,您可以结合任何其他部分,例如仅包含查询字符串的最后一个路径组件:
echo "$str?$parts[query]", "\n"; # MYID?out=1234567890?Browser=0?OS=1
以防万一:如果字符串已经表示结构化数据,请使用专用解析器对其进行划分(将其切成更小的部分)。这样就可以更轻松地找到您要查找的结果。
如果您使用 Linux/Unix,它会更简单,并且无需正则表达式即可工作,因为 basename()
函数 returns 路径的最后一个组件然后(不起作用在 Windows):
echo basename(parse_url($url, PHP_URL_PATH)),
'?',
parse_url($url, PHP_URL_QUERY),
"\n"
;
我只想从 URL 输出 MYID
。到目前为止我做了什么:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
echo substr($url, 0, strpos($url, "?out="));
输出:https://whatever.expamle.com/display/MYID
$url = preg_replace('#^https?://whatever.expamle.com/display/#', '', $url);
echo $url;
输出:MYID?out=1234567890?Browser=0?OS=1
我该如何合并呢?谢谢
对于更通用的解决方案,我们可以使用正则表达式 preg_match_all
:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
preg_match_all("/\/([^\/]+?)\?/", $url, $matches);
print_r($matches[1][0]); // MYID
当字符串始终是统一资源定位符 (URL) 时,就像您在问题中提出的那样,
给定以下字符串:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
你可以先解析它:
$parts = parse_url($url);
然后利用 MYID 是最后一个路径组件这一事实:
$str = preg_replace(
'~^.*/(?=[^/]*$)~' /* everything but the last path component */,
'',
$parts['path']
);
echo $str, "\n"; # MYID
然后根据您的需要,您可以结合任何其他部分,例如仅包含查询字符串的最后一个路径组件:
echo "$str?$parts[query]", "\n"; # MYID?out=1234567890?Browser=0?OS=1
以防万一:如果字符串已经表示结构化数据,请使用专用解析器对其进行划分(将其切成更小的部分)。这样就可以更轻松地找到您要查找的结果。
如果您使用 Linux/Unix,它会更简单,并且无需正则表达式即可工作,因为 basename()
函数 returns 路径的最后一个组件然后(不起作用在 Windows):
echo basename(parse_url($url, PHP_URL_PATH)),
'?',
parse_url($url, PHP_URL_QUERY),
"\n"
;