我需要将字符串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(这是动态值)
答案 0 :(得分:1)
您可以使用以下短正则表达式删除最后四个连字符分隔部分和“.html”文件扩展名:
/(?:-[^-]+){4}\.html$/
非捕获组((?:
... )
),由连字符(-
)后跟一个或多个非连字符([^-]+
)组成,重复四次({4}
),然后是一个圆点字符(\.
- 注意点是转义的!)和html
,最后是行尾($
})。
答案 1 :(得分: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]);