[php] 폭발에서 PHP 여러 구분 기호

문제가 있고 문자열 배열이 있으며 다른 구분 기호로 분해하고 싶습니다. 예를 들어

$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);


답변

첫 번째 문자열을 가져 와서 모두 @vsusing 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] => )
// )

출처 : php.net의 php @ metehanarslan


답변

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/