如何使用空格作为分隔符将字符串分成5个部分

时间:2022-01-12 02:20:50

For example I have a string:

例如,我有一个字符串:

$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);

But like this I will split my string into words, using space as a delimiter. Also what Happens if string contains multiple spaces? Will my script be able to split it as well?

但是像这样,我将把我的字符串分割成单词,使用空格作为分隔符。如果字符串包含多个空格,会发生什么?我的脚本也能拆分它吗?

1 个解决方案

#1


2  

You can just use preg_match_all with the following regex:

您可以使用preg_match_all与以下regex:

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

See regex demo

查看演示正则表达式

This regex will match:

这个正则表达式匹配:

  • \S+ - one or more non-whitespace symbols
  • 一个或多个非空格符号
  • (?:\s+\S+){0,4} - 0 to 4 sequences (0 is necessary because there can be a "tail" of less than 5 "words" at the end) of...
    • \s+ - one or more whitespaces
    • 一个或多个白色空间
    • \S+ - one or more non-whitespace symbols
    • 一个或多个非空格符号
  • (?:\s+\ s+){0,4} - 0 - 4}序列(0是必要的,因为在…的结尾可能有一个小于5 "words"的"tail")。\s+ -一个或多个空格+ -一个或多个非空白符号。

PHP demo:

PHP演示:

$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]);

#1


2  

You can just use preg_match_all with the following regex:

您可以使用preg_match_all与以下regex:

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

See regex demo

查看演示正则表达式

This regex will match:

这个正则表达式匹配:

  • \S+ - one or more non-whitespace symbols
  • 一个或多个非空格符号
  • (?:\s+\S+){0,4} - 0 to 4 sequences (0 is necessary because there can be a "tail" of less than 5 "words" at the end) of...
    • \s+ - one or more whitespaces
    • 一个或多个白色空间
    • \S+ - one or more non-whitespace symbols
    • 一个或多个非空格符号
  • (?:\s+\ s+){0,4} - 0 - 4}序列(0是必要的,因为在…的结尾可能有一个小于5 "words"的"tail")。\s+ -一个或多个空格+ -一个或多个非空白符号。

PHP demo:

PHP演示:

$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]);