문제가 있고 문자열 배열이 있으며 다른 구분 기호로 분해하고 싶습니다. 예를 들어
$example = 'Appel @ Ratte';
$example2 = 'apple vs ratte'
@ 또는 vs로 폭발하는 배열이 필요합니다.
나는 이미 해결책을 썼지 만 모두가 더 나은 해결책을 가지고 있다면 여기에 게시하십시오.
private function multiExplode($delimiters,$string) {
$ary = explode($delimiters[0],$string);
array_shift($delimiters);
if($delimiters != NULL) {
if(count($ary) <2)
$ary = $this->multiExplode($delimiters, $string);
}
return $ary;
}
답변
사용은 어떻습니까
$ output = preg_split ( "/ (@ | vs) /", $ input);
답변
첫 번째 문자열을 가져 와서 모두 @
를 vs
using str_replace
으로 바꾼 다음 분해 vs
하거나 그 반대로 할 수 있습니다.
답변
function multiexplode ($delimiters,$string) {
$ready = str_replace($delimiters, $delimiters[0], $string);
$launch = explode($delimiters[0], $ready);
return $launch;
}
$text = "here is a sample: this text, and this will be exploded. this also | this one too :)";
$exploded = multiexplode(array(",",".","|",":"),$text);
print_r($exploded);
//And output will be like this:
// Array
// (
// [0] => here is a sample
// [1] => this text
// [2] => and this will be exploded
// [3] => this also
// [4] => this one too
// [5] => )
// )
답변
strtr()
다른 모든 구분 기호를 첫 번째 문자로 바꾸는 방법은 어떻습니까?
private function multiExplode($delimiters,$string) {
return explode(
$delimiters[0],
strtr(
$string,
array_combine(
array_slice( $delimiters, 1 ),
array_fill(
0,
count($delimiters)-1,
array_shift($delimiters)
)
)
)
);
}
읽을 수없는 일종의 것 같지만 여기서 작업하는 것으로 테스트했습니다.
원 라이너 ftw!
답변
strtok()
당신을 위해 작동 하지 않습니까?
답변
간단히 다음 코드를 사용할 수 있습니다.
$arr=explode('sep1',str_replace(array('sep2','sep3','sep4'),'sep1',$mystring));
답변
이 솔루션을 사용해 볼 수 있습니다 …. 잘 작동합니다
function explodeX( $delimiters, $string )
{
return explode( chr( 1 ), str_replace( $delimiters, chr( 1 ), $string ) );
}
$list = 'Thing 1&Thing 2,Thing 3|Thing 4';
$exploded = explodeX( array('&', ',', '|' ), $list );
echo '<pre>';
print_r($exploded);
echo '</pre>';
출처 : http://www.phpdevtips.com/2011/07/exploding-a-string-using-multiple-delimiters-using-php/