php 正则 最后一个字符,关于正则表达式:在PHP中查找字符串中的最后一个字符...

我正在用PHP进行一些URL重写,需要找到末尾有斜线的URL,然后执行301重定向。我以为会有一个简单的PHP函数来查找最后一个字符串,但我找不到任何东西。第一直觉让我觉得我需要使用regex,但我不是100%。

下面是一个例子:

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

那么,什么函数可以帮助我检查最后一个字符是否是"/"?

有10多种方法可以做到这一点!

谢谢你们的回复!不太确定该选哪一个。

if (s($str)->endsWith('/'))header('Location: '.s($str)->replaceLast('/')),在这个独立的库中找到。无论如何,对于重定向,在Web服务器(例如使用mod_rewrite的Apache)中执行此操作可能更容易。

安全移除最后一个/的一个很好的解决方案是使用

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

当有一个或多个字符串时,rtrim()删除字符串右侧的所有/。

您还可以在URL末尾安全地添加一个单独的/:

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

您可以使用substr:

substr($str, -1)

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

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

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

投反对票的原因是什么?

+你得到了我的赞成票-你实际上回答了标题中的问题。

$string[strlen($string)-1]给了你最后一个字符。

但是如果你想去掉尾随斜杠,你可以做$string = rtrim($string, '/');。如果没有尾随斜线,$string将保持不变。

substr($string,-1)很好:)

您可以使用basename()。

这将使http://domainx.com/characters/和http://domainx.com/characters返回characters。

你可以这样做:

$page = $_SERVER['REQUEST_URI'];

$module = basename($page);

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

如果要收集最后一个/修剪的URL,则可以执行以下操作:

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

BASE_URL  = 'http://example.com'

那么你可以这样做:

$page = $_SERVER['REQUEST_URI'];

$module = basename($page);

$trimmedUrl = BASE_URL.'/'.$module;

如果php>7.1

$string[-1]

会给你最后一个角色

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

你可以在主题结束时用preg_replace()来表示/。

$url = 'http://domainx.com/characters/';

$url = preg_replace('/(?:\/)$/', '', $url);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值