'How to split a string by multiple delimiters in PHP?

"something here ; and there, oh,that's all!"

I want to split it by ; and ,

so after processing should get:

something here

and there

oh

that's all!


Solution 1:[1]

<?php

$pattern = '/[;,]/';

$string = "something here ; and there, oh,that's all!";

echo '<pre>', print_r( preg_split( $pattern, $string ), 1 ), '</pre>';

Solution 2:[2]

$result_array = preg_split( "/[;,]/", $starting_string );

Solution 3:[3]

The split() PHP function allows the delimiter to be a regular expression. Unfortunately it's deprecated and will be removed in PHP7!

The preg_split() function should be OK, and it returns an array:

$results = preg_split('/[;,]/', $string);

There are a few extra optional parameters which may be useful to you.

Is the first delimiter character in your edited example actually a 2 byte Unicode character?

Perhaps the preg_slit() function is treating the delimiter as three characters and splitting between the characters of the unicode (Chinese?) 'character'

Solution 4:[4]

You can get the values into an array using Devin's or Meder's method.

To get the output you want, you could probably do this

echo implode("\n", $resultingArray);

Or use <br /> if it's HTML you want.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dharman
Solution 2 Yogesh Suthar
Solution 3 Moritur
Solution 4 Community