2015-02-23 3 views
0

У меня есть переменная (текст), и она обновляется с предложениями каждый раз, когда есть обновление. Когда я показываю этот массив, он превращается в 1 длинное предложение, и я хочу разбить его на отдельные предложения для удобства чтения.Проблемы с разбиением длинной строки с preg_match_all

<?php 
$pattern = '~\\d+-\\d+-\\d{4} // \\w+: ~ '; 
$subject = '01-02-2015 // john: info text goes here 10-12-2015 // peter: some more info 

'; 
$matches = array(); 
$result = preg_match_all ($pattern, $subject, $matches); 
?> 

Что дает этот вывод:

$matches: 

array (
    0 => 
    array (
    0 => '01-02-2015 // john: ', 
    1 => '10-12-2015 // peter: ', 
), 
) 

я хотел бы выход быть:

$matches: 

array (
    0 => 
    array (
    0 => '01-02-2015 // john: info text goes here', 
    1 => '10-12-2015 // peter: some more info', 
), 
) 

Мне нужен выход, чтобы быть, как это так, я могу использовать цикл Еогеасп для печати каждого предложения.

пс. Я хотел бы попытаться заставить его работать таким образом, прежде всего, потому что в противном случае мне нужно будет изменить много записей в базе данных.

pps. Я также не герой с регулярным выражением, как вы можете видеть, поэтому я надеюсь, что кто-то может мне помочь!

+2

Это должно работать '$ шаблон =«~ \ D + - \ D + - \ d {4} // \ W +: [& alpha; zA-Z] + ~ '; ' – Cyclonecode

ответ

2

Просто изменить регулярное выражение, как показано ниже,

$pattern = '~\d+-\d+-\d{4} // \w+: .*?(?=\s\d+|$)~'; 

.*? будет делать нежадным матч нуля или более символов, пока пробел, затем цифры или конца строки достигается.

DEMO

$str = "01-02-2015 // john: info text goes here 10-12-2015 // peter: some more info"; 
preg_match_all('~\d+-\d+-\d{4} // \w+: .*?(?=\s\d+|$)~', $str, $matches); 
print_r($matches); 

Выход:

Array 
(
    [0] => Array 
     (
      [0] => 01-02-2015 // john: info text goes here 
      [1] => 10-12-2015 // peter: some more info 
     ) 

) 
+0

Почему я не удивлен, что вы на этот вопрос: D – Rizier123

+0

А, это имеет смысл, я не мог получить часть последней части для работы. – Redavac

Смежные вопросы