2016-01-22 1 views
2

К примеру у меня есть строка:Как разбить строку на часть 5 слов, используя пространство в качестве разделителя

$text = ' 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sollicitudin, erat id cursus consectetur, augue nulla tincidunt lorem, sit amet viverra elit lacus eu ligula. Aliquam pulvinar nibh sed sodales congue. Donec sed magna nibh. Phasellus fermentum malesuada ante eget bibendum. Duis iaculis pellentesque mi, ut ullamcorper mauris congue id. Aenean ac sagittis orci, vel luctus erat. Nunc sapien nisi, porttitor non lorem fermentum, dapibus luctus nibh. Donec imperdiet rhoncus odio quis consequat. Duis ullamcorper malesuada tempus. Quisque vitae urna eu nisi vehicula faucibus. Etiam condimentum mauris ac quam sagittis imperdiet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus risus elit, elementum et pulvinar sed, vestibulum non massa. Sed congue sollicitudin suscipit. Proin eleifend enim sapien, quis pharetra sapien imperdiet sed. Proin ligula dolor, scelerisque eu ligula sed, volutpat aliquet erat. 

Praesent enim odio, tincidunt id velit quis, imperdiet dictum nisl. Donec pulvinar felis neque, bibendum tincidunt lacus fermentum quis. Sed ante mauris, efficitur et dui quis, porta lacinia dolor. Aliquam tincidunt vitae odio vitae dapibus. Donec lectus nunc, dapibus ut vehicula at, dapibus eu dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean tempus porttitor tellus ac interdum. Cras et purus ullamcorper, facilisis ante eget, placerat sem. Cras ornare nunc id tortor aliquam commodo. 
' 

$explodedData = preg_split('/\s+/', $text); 

Но как это я разделить мою строку на слова, используя пространство в качестве разделителя. Также, что происходит, если строка содержит несколько пробелов? Смогу ли мой сценарий разбить его?

ответ

2

Вы можете просто использовать preg_match_all со следующим регулярным выражением:

'~\S+(?:\s+\S+){0,4}~' 

См regex demo

Это регулярное выражение будет соответствовать:

  • \S+ - один или более непробельных символы
  • (?:\s+\S+){0,4} - от 0 до 4 последовательностей (0 необходимо потому, что там может быть «хвост» менее чем 5 «слов» в конце) из ...
    • \s+ - один или несколько
    • пробелы
    • \S+ - один или более непробельных символы

PHP demo:

$re = '~\S+(?:\s+\S+){0,4}~'; 
$str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In sollicitudin, erat id cursus consectetur, augue nulla tincidunt lorem, sit amet viverra elit lacus eu ligula. Aliquam pulvinar nibh sed sodales congue. Donec sed magna nibh. Phasellus fermentum malesuada ante eget bibendum. Duis iaculis pellentesque mi, ut ullamcorper mauris congue id. Aenean ac sagittis orci, vel luctus erat. Nunc sapien nisi, porttitor non lorem fermentum, dapibus luctus nibh. Donec imperdiet rhoncus odio quis consequat. Duis ullamcorper malesuada tempus. Quisque vitae urna eu nisi vehicula faucibus. Etiam condimentum mauris ac quam sagittis imperdiet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus risus elit, elementum et pulvinar sed, vestibulum non massa. Sed congue sollicitudin suscipit. Proin eleifend enim sapien, quis pharetra sapien imperdiet sed. Proin ligula dolor, scelerisque eu ligula sed, volutpat aliquet erat."; 
preg_match_all($re, $str, $matches); 
print_r($matches[0]); 
Смежные вопросы