2014-10-01 2 views

답변

2

로 시작하지 않는 단어를 제거하는 wan't 문자열에서 다른 사람을 제거하는 방법 첫 번째 문자가 #인지 확인합니다. 같은 : 당신은 또한 (?:\#([^\s]+)) 같은 정규 표현식을 사용할 수 있습니다

$bits = explode(' ', $query); 
$newquery = array(); 

foreach($bits as $bit){ 
    if(strlen($bit) > 0 && $bit[0] === '#') $newquery[] = $bit; 
} 

$newquery = implode(', ', $newquery); 

단어와 일치하는 얻을 수 있습니다.

편집 : 지적Scopey으로 내 초기 정규식을 향상시킬 수있다 (아래 변경) 및 반환 된 배열은 다차원이기 때문에 당신이 $matches[1]를 사용해야합니다. 참조 : 각 요소를 통해 공간에

preg_match_all('/#([^#\s]+)/', $query, $matches); 

$newquery = implode(', ', $matches[1]); 
+1

+1'preg_match_all' 대답을 위해, 그러나 정규 표현식은'# hello # test'와 같이 일치하는 것을 고려하여'/ # ([^ # \ s] +) /'로 개선 할 수 있습니다 서로에게. 'implode (',', $ matches [1]);'와 같이 일치를 내파해야합니다. regex 수식어로'g'를 사용할 수 없습니다. – Scopey

+1

'g'한정자는 자바 스크립트에서만 작동한다고 생각합니다. 그러나, 나는 틀릴 수 있었다. –

+0

좋은 캐치 @ 스코 피, 내 대답을 편집했습니다 –

관련 문제