2010-05-18 7 views
19

구분 기호 배열을 사용하여 explode() 할 수있는 방법이 있습니까?구분 기호 배열로 분해

PHP 매뉴얼 :

배열 폭발 (문자열 $ 구분자, 문자열 $ 문자열 [, INT의 $ 한계])

대신 string $delimiter를 사용하여 성능에 영향을주지 않고 array $delimiter를 사용할 수있는 방법이 너무 많은?

답변

25

적절한 정규식을 사용하여 preg_split()을 사용하십시오.

+6

예를 들어 :'print_r (preg_split ("/.,) /", "0 1,2.3"));'당신에게'Array [0] => 0 [1] => 1 [2 ] => 2 [3] => 3)'. – sirhc

+2

'print_r (preg_split ("/ [, \.] /", "0 1,2.3"));'의미 : 고마워, 아마 내가 생각하기에 가장 좋은 방법. – JoeC

-1

PHP의 explode 메서드는 여러 구분 기호를 지원하지 않으므로 배열에 전달할 수 없습니다. 또한 여러 구분 기호가있는 구문 분석 문자열은 어떤 종류입니까? 당신은 가장 좋은 방법은 구분 기호를 반복하고, 분해 된 문자열 중 일부를 다시 분해하는 것입니다. 65Fbef05의 코드 @ 개선 것

51
$str = 'Monsters are SUPER scary, bro!'; 
$del = array('a', 'b', 'c'); 

// In one fell swoop... 
$arr = explode($del[0], str_replace($del, $del[0], $str)); 
+1

이것은 정규식 사용을 피하기위한 대단한 트릭입니다. –

+0

그것은 정규식보다 빠를 것입니다. – Pioul

+0

놀라운, briliant하고 간단한 해결책, 명성 thats! –

6
function explode_by_array($delim, $input) { 
    $unidelim = $delim[0]; 
    $step_01 = str_replace($delim, $unidelim, $input); //Extra step to create a uniform value 
    return explode($unidelim, $step_01); 
} 

. 원래의 문자열에는 "+delim+"이 사용될 수 있으므로 첫 번째 구분 기호를 사용합니다.