У меня есть две строки, из которых мне нужно извлечь данные. Для этого я использую preg_replace
. Однако я не уверен, как сделать так, чтобы последние \s\:\:
могли либо совпадать, либо нет. Я пробовал {0,}
, но тогда он не соответствует первой строке, и без нее последняя строка не совпадает.Регулярное выражение, создающее подшаблон
$strings = array(
'13.02 - foobar1 bla bla :: 08.03.2013 - 23.12.2013',
'06.05 21:00 - " foobar2 bla bla "',
)
foreach($strings as $data){
$pattern = '/^(\d){2}\.(\d){2}\s?(\d){0,2}(\:)?(\d){0,2}\s\-(.*)(\s\:\:.*)?/i';
echo preg_replace($pattern, '$6', $data);
}
Я ожидаю, чтобы получить эти две строки в качестве конечной продукции:
"foobar1 bla bla"
"" foobar2 bla bla ""
Ваш текущий код работает нормально и соответствует строкам. Проверьте [это] (http://codepad.org/h0ofNAuO). Однако вам не хватает ';' в объявлении '$ strings'. –
Для первой строки мне нужно удалить «:: 08.03.2013 - 23.12.2013» часть – WraithLux
Сделать пример ввода и точный ожидаемый результат поможет много ... – Enissay