我试图删除后面的所有内容,并包含给定网址的最后?
。我目前正在与preg_replace
合作,但在完成目标方面没有运气。这是我用来挑出最后一个#\/[^?]*$#
的正则表达式?
。使用substr
还有更快的方法吗?
示例链接:
preg_replace('#\/[^?]*$#', '', $post="www.exapmle.com?26sf213132aasdf1312sdf31")
期望输出
www.example.com
答案 0 :(得分:2)
以下是使用substr
和strrpos
:
$post = "www.exapmle.com?26sf213132aasdf1312sdf31";
$pos = strrpos($post, '?');
$result = substr($post, 0, $pos);
答案 1 :(得分:1)
在正则表达式的开头添加\?
而不是\/
\?[^?]*$
\?
与?
[^?]*$
匹配?
以外的任何内容,直到$
示例http://regex101.com/r/sW6jE7/3
$post="www.exapmle.com?26sf213132aasdf1312sdf31";
$res=preg_replace('/\?[^?]*$/', '', $post);
echo $res;
将提供输出
www.example.com
修改强>
如果你想从url中删除整个查询字符串,那么对regex进行轻微修改就可以完成这项工作
\?.*$
将删除任何后跟问号的内容
答案 2 :(得分:0)
只需匹配从开始到?
符号的所有内容。
preg_match('/^[^?\n]*/', $post="www.exapmle.com?26sf213132aasdf1312sdf31", $match);
echo $match[0];
输出:
www.exapmle.com
答案 3 :(得分:0)
试试这个工作正常:
$host_url = "www.exapmle.com?26sf213132aasdf1312sdf31";
$part_url = strrpos($host_url, '?');
$result = substr($host_url, 0, $part_url);
echo $result;
答案 4 :(得分:0)
尽管OP标签正则表达式,但令人惊讶的是没有人建议explode()
,这更容易。
$post = "www.exapmle.com?26sf213132aasdf1312sdf31";
$tokens = explode('?', $post);
echo $tokens[0]; // www.exapmle.com