清理PHP中的逗号分隔列表

让用户输入项目列表是一种正常的做法,但是有时要使用户正确执行操作本身就是一个挑战。有些用户会在逗号之间放置空格,有些则不会,有些甚至会在列表的末尾添加逗号。

这是一些代码,可以使用一些简单的正则表达式来清除逗号分隔的列表。它可以使用preg_replace()函数来工作,并通过向该函数传递一个选项模式数组和一个替换数组。

$list= trim($list);
$patterns[0] = '/\s*,\s*/';
$patterns[1] = '/,{2,}/';
$patterns[2] = '/,+$/';
$patterns[3] = '/^,+/';
$replacements[0] = ',';
$replacements[1] = ',';
$replacements[2] = '';
$replacements[3] = '';
$list= preg_replace($patterns, $replacements, $list);

取以下字符串,由用户在凌晨2点输入,然后从酒吧回家后上网冲浪。

, ,,,item 1,,, ,, ,,, , item 2, item 3 ,item4, ,,,,, item 5,,, ,, ,, , ,

该可怕的字符串将转换为以下整洁的字符串。

item 1,item 2,item 3,item 4,item5

该代码的工作方式是先替换逗号前后的任何空格,然后再将多个逗号替换为单个逗号。最终,代码检测到字符串开头或结尾的任何逗号并将其删除。