php单独的文本,但考虑逗号作为单词

php单独的文本,但考虑逗号作为单词,php,arrays,explode,comma,Php,Arrays,Explode,Comma,我希望获得本文中的每个单词,但需要考虑将逗号作为单独的单词,在PHP中: 我的输入文本: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 我的通缉令: array[0] => "Lorem" array[1] => "ipsum" array[2] => "dolor" array[3] => "sit" array[4] => "amet" array[5] => "," array[6]

我希望获得本文中的每个单词,但需要考虑将逗号作为单独的单词,在PHP中:

我的输入文本:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
我的通缉令:

array[0] => "Lorem"
array[1] => "ipsum"
array[2] => "dolor"
array[3] => "sit"
array[4] => "amet"
array[5] => ","
array[6] => "consectetuer"
array[7] => "adipiscing"
array[8] => "elit"
array[9] => "."
使用
explode(“,$text)
我得到的是:

array[0] => "Lorem"
array[1] => "ipsum"
array[2] => "dolor"
array[3] => "sit"
array[4] => "amet,"
array[5] => "consectetuer"
array[6] => "adipiscing"
array[7] => "elit."
你能帮我吗?
TIA

您可以将逗号替换为空格+逗号+空格','->','

$newSentence = str_replace("," , " , " , $theSentence);  
$arr = preg_split('/[\s]+/', $newSentence);
试试下面

preg_match_all('/([\w]+)([\,\.])?/', "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",$match);

$arr = array_merge($match[1],array_filter($match[2]));
print_r($arr);

您应该使用
preg\u match\u all()

代码:()

输出:

array (
  0 => 'Lorem',
  1 => 'ipsum',
  2 => 'dolor',
  3 => 'sit',
  4 => 'amet',
  5 => ',',
  6 => 'consectetuer',
  7 => 'adipiscing',
  8 => 'elit',
  9 => '.',
)
\w
可用于匹配
a-z
a-z
0-9
\ucode>,但在示例中仅存在字母

如果包含撇号,可以使用
$pattern='/[a-z\']+|\S/i'
,但将来的调整是由您自己决定的

第二个备选方案中的
\S
是任何非空白字符——它收集第一个备选方案允许使用的所有标点字符(一次一个)


模式上的
i
标志指示
[a-z]
的行为类似于
[a-Za-z]

使用
preg\u match\u all(“/\w+,| \./”,$str,$matches)
@穆罕默德的评论用于从OP中寻求澄清或其他细节。请不要在评论中回答(请删除您的评论答案)。不确定您正在对数据做什么,但对换行符和其他可能会干扰数组和预期用途的格式感到厌倦。第一种方法可能会给您一个空格的数组元素。使用第二种方法。@locobastos您看到我的高效单函数解决方案了吗?这是一个专业级的解决方案。
array (
  0 => 'Lorem',
  1 => 'ipsum',
  2 => 'dolor',
  3 => 'sit',
  4 => 'amet',
  5 => ',',
  6 => 'consectetuer',
  7 => 'adipiscing',
  8 => 'elit',
  9 => '.',
)