0

给定以下网址:

http://www.domain.com/reporting/category-breakdown.php?re=updated

我需要删除 .php 之后的所有内容

它可能是“?re=updated”,也可能是别的东西。字符数并不总是相同,但字符串总是以 .php 结尾。

我该怎么做呢?

4

4 回答 4

1

要查找字符串中子字符串的第一个位置,您可以在 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);

给你!

于 2013-06-26T17:12:23.180 回答
0

找到第一个 indexOf (".php"),然后使用从 char 0 到您的索引的子字符串 + (".php") 的长度;

于 2013-06-26T16:59:49.480 回答
0

3线解决方案:

$str = "http://www.domain.com/reporting/category-breakdown.php?re=updated";
$str = array_shift(explode('?', $str));
echo $str;

注意:这不是万无一失的,并且在某些情况下可能会失败,但是对于您提到的那种 URL,这是可行的。

于 2013-06-26T17:18:44.027 回答
0

这是使用 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 等。

链接到手册页

于 2014-01-11T22:56:05.073 回答