แล้วเรื่องนี้ล่ะ
/**
* Like explode with multiple delimiters.
* Default delimiters are: \ | / and ,
*
* @param string $string String that thould be converted to an array.
* @param mixed $delimiters Every single char will be interpreted as an delimiter. If a delimiter with multiple chars is needed, use an Array.
* @return array. If $string is empty OR not a string, return false
*/
public static function multiExplode($string, $delimiters = '\\|/,')
{
$delimiterArray = is_array($delimiters)?$delimiters:str_split($delimiters);
$newRegex = implode('|', array_map (function($delimiter) {return preg_quote($delimiter, '/');}, $delimiterArray));
return is_string($string) && !empty($string) ? array_map('trim', preg_split('/('.$newRegex.')/', $string, -1, PREG_SPLIT_NO_EMPTY)) : false;
}
ในกรณีของคุณคุณควรใช้ Array สำหรับพารามิเตอร์ $ delimiters จากนั้นก็เป็นไปได้ที่จะใช้ตัวอักษรหลายตัวเป็นตัวคั่นเดียว
หากคุณไม่สนใจช่องว่างต่อท้ายในผลลัพธ์ของคุณคุณสามารถลบarray_map('trim', [...] )
ส่วนในแถวย้อนกลับได้ (แต่อย่าเป็นคนที่เล่นโวหารในกรณีนี้เก็บไว้preg_split
ในนั้น)
เวอร์ชั่น PHP ที่ต้องการ: 5.3.0 หรือสูงกว่า
คุณสามารถทดสอบได้ที่นี่