php单独的文本,但考虑逗号作为单词
我希望获得本文中的每个单词,但需要考虑将逗号作为单独的单词,在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]
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 => '.',
)