2013-08-17 4 views
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; 

Я прочитал переполнение стека, что добавление $ в конце прочитает ул справа налево, но это не похоже на работу.

Примечание: Кроме того, я буду использовать это регулярное выражение, чтобы получить значения 130pm, 1000pm, s2, 1 (Это являются динамическими значениями)

ответ

1

Вы можете использовать следующее короткое регулярное выражение, чтобы удалить последние четыре hyphen- отдельные части и ".html" расширение файла:

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

не-захвата группы ((?: ... )), состоящие из дефиса (-), а затем один или более не дефис ([^-]+), неоднократный четыре раза ()), а затем символ точки (\. - обратите внимание, что точка сбежала!) И html, и, наконец, конец строки ($).

1

В качестве альтернативы Regex, вы можете сделать это с помощью прямого подхода с использованием взрываются и array_chunk

$strArray = explode("-", "Live-tv-channel-nbc-130pm-1000pm-s2-1.html"); 
$arrayparts = (array_chunk($strArray, 4)); 
echo implode("-", $arrayparts[0]); 
Смежные вопросы