2015-01-22 3 views
-2

PHP에서 아래 문자열이 있습니다.PHP를 사용하여이 문자열을 분할하는 가장 간단한 방법은 무엇입니까?

$nick = guest 
$user = lbjpewueqi 
$host = AF8A326D.E0B4A40D.F85DC93A.IP 

이 작업을 수행하는 데 사용할 수있는 가장 좋은 기능 무엇 : 나는 문자열에서 이러한 변수를 만들 필요가

:[email protected] 

?

이상적으로 나는 어떤 종류의 함수를 만들어서 문자열을 전달할 수 있고 반환 할 부분을 전달할 수 있습니다. 예를 들어

:

$string = "[email protected]"; 

echo stringToPart($string, nick); 
guest 

echo stringToPart($string, nick); 
lbjpewueqi 

echo stringToPart($string, host); 
AF8A326D.E0B4A40D.F85DC93A.IP 
+0

'preg_split()'을 살펴보십시오. explode() 함수를 보면 3 번 사용해야 할 것입니다. 보조 노트에서, 당신이 시도한 것에 대한 예와 당신이 마주 친 오류/문제점을 게시 할 때 대개 더 빠른 응답을 얻는 데 도움이됩니다. – llanato

+0

아마도 * 그 * 문자열을 분할 할 필요는 없습니다. 모두 여러 가지 문자열을 분할해야합니다. 모든 문자열은 일반적인 서식 규칙을 공유합니다. ** 그 규칙을 설명하십시오. ** 그것이 없으면 실제로 도움이 될 수도 안될 수도있는 해결책을 추측 할 수 있습니다. 가장 좋은 방법은 아마 정규식 * 매치 (* 분할하지 않음)를 만드는 것입니다 :'if ($ match = preg_match ('???', $ string)) echo $ match [1]; .. ' – deceze

답변

0

또 다른 버전 : preg_split 솔루션보다 엄격한

function stringToPart($string, $part) { 
    if (preg_match('/^:(.*)!(.*)@(.*)/', $string, $matches)) { 
     $nick = $matches[1]; 
     $user = $matches[2]; 
     $host = $matches[3]; 
     return isset($$part) ? $$part : null; 
    } 
} 

더 - 그것은 분리 순서를 확인합니다.

+0

답변 해 주셔서 감사합니다. 'stringToPart ($ something, nick); '처럼 사용하고 있지만'PHP Notice : 정의되지 않은 상수 닉 사용 -'nick''을 사용합니다. 나는 그것을 올바르게 사용하고 있는가? – user4428391

+0

예 $ 부분 인수는 문자열이고 "or '를 사용하여 문자열을 선언해야합니다. fe.'nick '또는'nick ' –

+0

아, 실수로 놓 쳤습니다. – user4428391

0

아래 당신이 찾고있는 무엇을해야합니다.

$pattern = "/[:[email protected]]/"; 
$subject = ":[email protected]"; 
print_r(preg_split($pattern, $subject)); 

패턴은 당신이 전달되는 다른 문자열을 설명하기 위해 필요한 다른 인스턴스가 있다면 그래서 당신은 이론적으로 여기에 문자의 양을 가질 수에 분할 무엇을 문자 지정하는 것입니다.

하는 돌아가려면 대신 화면에 다음 인쇄의 값은이를 사용

$pattern = "/[:[email protected]]/"; 
$subject = ":[email protected]"; 
$result = preg_split($pattern, $subject)); 

$nick = $result[1]; 
$user = $result[2]; 
$host = $result[3]; 
0

당신은 다음과 같은 함수를 선언 할 수

$s = ":[email protected]"; 

function stringToPart($str, $part) { 
    $pat['nick'] = '/:(.*)!/'; 
    $pat['user'] = '/.*!(.*)@/'; 
    $pat['host'] = '/@(.*)/'; 

    preg_match($pat[$part], $str, $m); 
    if (count($m) > 1) return $m[1]; 
    return null; 
} 

echo stringToPart($s,'nick')."\n"; 
echo stringToPart($s,'user')."\n"; 
echo stringToPart($s,'host')."\n"; 
0
stringToPart(':[email protected]','nick'); 

function stringToPart($string, $type){ 
    $result['nick']= substr($string,strpos($string,':')+1,(strpos($string,'!')-strpos($string,':')-1)); 
    $result['user']= substr($string,strpos($string,'!')+1,(strpos($string,'@')-strpos($string,'!')-1)); 
    $result['host']= substr($string,strpos($string,'@')+1); 
    return $result[$type];   
} 
0
<?php 
function stringToPart($string, $key) 
{ 
    $matches = null; 
    $returnValue = preg_match('/:(?P<nick>[^!]*)!(?P<user>.*?)@(?P<host>.*)/', $string, $matches); 
    if (isset($matches[$key])) 
    { 
     return $matches[$key]; 
    } else 
    { 
     return NULL; 
    } 
} 

$string = ':[email protected]'; 
echo stringToPart($string, "nick"); 
echo "<br />"; 

echo stringToPart($string, "user"); 
echo "<br />"; 

echo stringToPart($string, "host"); 
echo "<br />"; 
?> 
관련 문제