You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除preg_match_all匹配结果数组[3]末尾的问号?

解决正则匹配后数组元素末尾带问号的问题

我来帮你搞定这个问题!你遇到的是正则匹配时不小心把URL里的问号也捕获进数组元素的情况,咱们分两种思路来解决:

方法一:修改正则表达式,直接不捕获问号

你的原正则里,(.+?)?start=true这部分的非贪婪匹配会把?start=true前面的问号也包含进去。咱们可以调整正则,用[^?]+来匹配除问号之外的所有字符,这样就能精准捕获到问号前的内容,不会把问号带进来。

修改后的代码如下:

preg_match_all('/class="_2zACE" href="(/tv-shows/)(.+?)\/([^?]+)\?start=true"/', $url_pre_series, $url_lote_serie, PREG_SET_ORDER);

这样匹配后,数组的[3]元素就会是s01_e01_the_killings_at_badgers_drift,完全不带末尾的问号啦。

方法二:匹配后手动移除问号

如果你不想修改正则,也可以在匹配完成后,对捕获到的结果做简单处理,去掉末尾的问号。常用的两种方式:

  1. 用rtrim()函数移除末尾指定字符:
// 假设取第一个匹配结果的[3]元素
$url_lote_serie[0][3] = rtrim($url_lote_serie[0][3], '?');
  1. 用正则替换掉末尾的问号:
$url_lote_serie[0][3] = preg_replace('/\?$/', '', $url_lote_serie[0][3]);

这两种方法都能快速把多余的问号去掉,根据你的需求选就行~

内容的提问来源于stack exchange,提问作者Torronf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 14:17:42