2011-07-30 2 views
6

특히, 음수 인덱스를 사용하여 문자열의 오른쪽에서 검색을 시작할 수 있기 때문에 MySQL에서 SUBSTRING_INDEX 함수를 좋아합니다.PHP : MySQL의 함수 SUBSTRING_INDEX와 동일합니까?

PHP에는이 기능과 동일한 기능이 있습니까? (또는 코드의 비트와 함께 그것을 할 수있는 쉬운 방법)

+3

는 [ 'SUBSTRING_INDEX']의 정의 (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index 읽기) –

답변

14

이 당신에게이 같은 기능을 얻을 단일 라이브러리 함수는 없다,하지만 당신은 한 줄 얻을 수 있습니다 :

$str = "www.mysql.com"; 
echo implode('.', array_slice(explode('.', $str), 0, 2)); // prints "www.mysql" 
echo implode('.', array_slice(explode('.', $str), -2)); // prints "mysql.com" 

쉽게로이 설정을 함수 :

function substring_index($subject, $delim, $count){ 
    if($count < 0){ 
     return implode($delim, array_slice(explode($delim, $subject), $count)); 
    }else{ 
     return implode($delim, array_slice(explode($delim, $subject), 0, $count)); 
    } 
} 
-2
function substring_index($subject, $delim, $count){ 
    if($count < 0){ 
     return implode($delim, array_slice(explode($delim, $subject), $count)); 
    }else{ 
     return implode($delim, array_slice(explode($delim, $subject), 0, $count)); 
    } 
} 
3

내가

string strstr (string $haystack , mixed $needle [, bool $before_needle = false ]) 
,369 생각

은 당신에게 맞는 PHP 함수입니다.

않는 strstr은 - 내가 궁금하고 레그/일치하는 설정을 사용하여 다른 방법을 테스트하는 문자열

<?php 
$email = '[email protected]'; 
$domain = strstr($email, '@'); 
echo $domain; // prints @example.com 

$user = strstr($email, '@', true); // As of PHP 5.3.0 
echo $user; // prints name 
?> 
0

의 첫 번째 항목은 다음/계산 구분 기호의 수를 허용하는 데 리팩토링 찾습니다. 다른 예제에서 사용하고있는 수표를 추가했지만 분리 자 필드의 일부 종류의 위생 처리를 권장합니다. `substr` 생각 분들

function substring_index($subject, $delim, $count){ 
    if($count < 0){ 
    $notRe = '[^\\'.$delim.']*'; 
    $elem = array(); 
    for($x=1;$x<=$count;$x++){ 
     array_push($elem,$notRe); 
    } 
    $re = '/^('.implode('\\'.$delim,$elem).')/'; 
    preg_match($re, $subject,$m); 
    if(count($m) == 2) { 
     return $m[1]; 
    } 
    } 
}