1

我需要将字符串Live-tv-channel-nbc-130pm-1000pm-s2-1.html转换为Live-tv-channel-nbc ,即我需要删除 130pm-1000pm-s2-1.html 部分(此值为动态值)

我试过下面的代码

$str = "Live-tv-channel-nbc-130pm-1000pm-s2-1.html";
$title = preg_replace("/-(.*?)-(.*?)-(.*?)-(\d+).html$/","",$str;
echo $title;

我读到堆栈溢出,在末尾添加 $ 将从右到左读取 str 但它似乎不起作用。

注意:我也将使用这个正则表达式来获取值 130pm , 1000pm ,s2 , 1 (这是动态值)

4

2 回答 2

1

您可以使用以下简短的正则表达式来删除最后四个连字符分隔的部分和“.html”文件扩展名:

/(?:-[^-]+){4}\.html$/

一个非捕获组 ( (?:... )),由一个连字符 ( -) 后跟一个或多个非连字符 ( [^-]+) 组成,重复四次 ( {4}),后跟一个点字符 ( \.- 请注意,该点已转义!) 和html,最后是行尾($)。

于 2013-08-17T14:44:45.857 回答
1

作为 Regex 的替代方法,您可以使用 explode 和 array_chunk 直接方法来做到这一点

$strArray = explode("-", "Live-tv-channel-nbc-130pm-1000pm-s2-1.html");
$arrayparts   = (array_chunk($strArray, 4));
echo implode("-", $arrayparts[0]);
于 2013-08-17T14:46:45.287 回答