在PHP中查找字符串中的最后一个字符

时间:2010-12-13 08:58:53

标签: php regex string url-rewriting character

我在PHP中进行了一些url重写,需要在末尾找到带斜杠的URL,然后执行301重定向。我认为有一个简单的PHP函数来查找最后一个字符串,但我找不到任何东西。第一直觉让我认为我需要使用正则表达式,但我不是100%。

以下是一个例子:

http://domainx.com/characters/我想找到一个尾随斜线并将其转换为http://domainx.com/characters

那么什么功能可以帮助我检查最后一个字符是否为“/”?

7 个答案:

答案 0 :(得分:46)

安全删除上一个/的好方法是使用

$string = rtrim($string, '/');
当有一个或多个时,

rtrim()会删除字符串右侧的所有/

您还可以在网址末尾安全地添加一个/

$string = rtrim($string, '/').'/';

答案 1 :(得分:30)

您可以使用substr

substr($str, -1)

这将返回单字节字符串中的最后一个字节/字符。另请参见多字节字符串变体mb_substr

但是如果你只想删除任何尾部斜杠,rtrim可能是最好的解决方案。

由于您正在使用URL,因此您可能还需要查看parse_url来解析URL,因为尾部斜杠不需要是URL路径的一部分。

答案 2 :(得分:13)

$string[strlen($string)-1]为您提供最后一个字符。

但是如果要删除尾部斜杠,可以执行$string = rtrim($string, '/');。如果没有尾部斜杠,$string将保持不变。

答案 3 :(得分:2)

您可以使用basename()

这将为characters以及http://domainx.com/characters/

返回http://domainx.com/characters

你可以这样做: -

$page = $_SERVER['REQUEST_URI'];
$module = basename($page);

然后,您可以直接在条件逻辑中使用$module,而无需执行任何重定向。

如果您想收集最后/个修剪过的网址,那么您可以这样做: -

如果要将项目基本URL存储在配置文件中: -

BASE_URL  = 'http://example.com'

然后你可以这样做: -

$page = $_SERVER['REQUEST_URI'];
$module = basename($page);
$trimmedUrl = BASE_URL.'/'.$module;

答案 4 :(得分:1)

您可以在主题末尾preg_replace() /

$url = 'http://domainx.com/characters/';
$url = preg_replace('/(?:\/)$/', '', $url);

答案 5 :(得分:1)

如果您的php> 7.1

$string[-1]

会给你最后一个字符

http://sandbox.onlinephpfunctions.com/code/ff439889f14906749e4eb6328796c354c60f269b

答案 6 :(得分:0)

使用PHP 8

str_ends_with($string, '/');

新的str_starts_with()str_ends_with()函数被添加到内核中。