2014-09-12 2 views
1

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

"XY30-0601" "LMF II Trump" 7 
"ZR3-0003601" "Durable canvas" 3 

"GQ450-020061" "DMZ Power 
Epic 
Durable canvas 
Handle for easy transport 
Sturdy buttons to keep the case rolled up 
Reinforced case stitching 
" 17 

Я ожидаю

"XY30-0601" "LMF II Trump" 7 
"ZR3-0003601" "Durable canvas" 3 
"GQ450-020061" "DMZ Power Epic Durable canvas Handle for easy transport Sturdy buttons to keep the case rolled up Reinforced case stitching" 17 
+0

@AvinashRaj, скорее всего, третий пункт будет один лайнер, как первые два – Ghost

+0

Вы могли бы показать примерный код? –

+0

@ AvinashRaj уверен, что человек не пробовал ответить отлично +1 – Ghost

ответ

3

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

\n(?:(?!")|(?=" +\d+)) 

DEMO

Код:

<?php 
$string = <<<EOT 
"XY30-0601" "LMF II Trump" 7 
"ZR3-0003601" "Durable canvas" 3 

"GQ450-020061" "DMZ Power 
Epic 
Durable canvas 
Handle for easy transport 
Sturdy buttons to keep the case rolled up 
Reinforced case stitching 
" 17 
EOT; 
$pattern = '~\n(?:(?!")|(?=" +\d+))~'; 
$replacement = " "; 
echo preg_replace($pattern, $replacement, $string); 
?> 

Выход:

"XY30-0601" "LMF II Trump" 7 
"ZR3-0003601" "Durable canvas" 3 
"GQ450-020061" "DMZ Power Epic Durable canvas Handle for easy transport Sturdy buttons to keep the case rolled up Reinforced case stitching " 17 
0
(?=[^"]*")\n 

Вы можете использовать this.replace по space .Это использует предпросмотр для положительного номера найти \n перед "

Смотрите демо.

http://regex101.com/r/hQ1rP0/14

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