给定以下网址:
http://www.domain.com/reporting/category-breakdown.php?re=updated
我需要删除 .php 之后的所有内容
它可能是“?re=updated”,也可能是别的东西。字符数并不总是相同,但字符串总是以 .php 结尾。
我该怎么做呢?
给定以下网址:
http://www.domain.com/reporting/category-breakdown.php?re=updated
我需要删除 .php 之后的所有内容
它可能是“?re=updated”,也可能是别的东西。字符数并不总是相同,但字符串总是以 .php 结尾。
我该怎么做呢?
要查找字符串中子字符串的第一个位置,您可以在 PHP 中使用 strpos()。
$mystring = 'http://www.domain.com/reporting/category-breakdown.php?re=updated';
$findme = '.php';
$pos = strpos($mystring, $findme);
之后,您的 URL 中就有了子字符串“.php”的第一个字符的位置。您希望获取 URL 直到 '.php' 的结尾,这意味着您获得的位置 + 4(子字符串长度)。为此,您可以使用 substr(string,start,length) 函数。
substr($mystring, 0, $pos + 4);
给你!
找到第一个 indexOf (".php"),然后使用从 char 0 到您的索引的子字符串 + (".php") 的长度;
3线解决方案:
$str = "http://www.domain.com/reporting/category-breakdown.php?re=updated";
$str = array_shift(explode('?', $str));
echo $str;
注意:这不是万无一失的,并且在某些情况下可能会失败,但是对于您提到的那种 URL,这是可行的。
这是使用 PHP 获取 url 的非查询字符串部分的另一种方法:
$url = 'http://www.domain.com/reporting/category-breakdown.php?re=updated';
$parsed = parse_url($url);
$no_query_string = $parsed['scheme'] . '://' . $parsed['hostname'] . $parsed['path'];
// scheme: http, hostname: www.domain.com, path: /reporting/category-breakdown.php
这将处理 .php、.phtml、.htm、.html、.aspx 等。