2014-11-29 3 views
1

태그 시스템을 만들고 있지만 사용자가 1 명 이상의 사용자를 태그 할 때 몇 가지 문제가 있습니다.모두 @ 문자 뒤에 모든 문자 가져 오기

이 내 코드입니다 :

$data = "test test test test @brian_2 test test @john Spelling @test_3 test test test test"; 

if (($pos = strpos($data, "@")) !== FALSE) { 
    $whatIWant = substr($data, $pos+1); 
    $whatIWant = substr($whatIWant, 0, strpos($whatIWant, ' ')); 
} 

echo $whatIWant; 

그러나 단지 에코 첫째,이 경우 brian_2에, 사용자가 태그 것이다.

나는 모든 사용자를 확보하기 위해 잠시 노력했지만 작동하지 않습니다.

아이디어가 있으십니까?

감사

이에 대한

답변

4

더 나은 사용하여 정규식 : 라이브

preg_match_all("/@[A-Za-z0-9_]+/",$text, $matches); 
print_r($matches); 

: http://ideone.com/ILYkYf

출력 :

Array 
(
    [0] => Array 
     (
      [0] => @brian_2 
      [1] => @john 
      [2] => @test_3 
     ) 

) 
+1

'[\ W_]'아마 더 나은 문자 클래스 용도. –

+0

맞습니다. 나는 혼란을 피하기 위해 명시적인 것을 선호합니다. – dynamic

+0

해답을 가져 주셔서 감사합니다. 완벽하게 작동합니다. 나는 5 분 안에 그것을 받아 들일 것이다. – zeeks

관련 문제