2014-02-20 2 views
0

나는이 스크립트를 가지고있다. 그러나 나는 해시 태그 시스템을 원하지 않지만 Twitter에서와 같이 '@ 존 도우'를 할 수있는 태깅 시스템을 원하며 사용자 인 JohnDoe는 트윗이가는 사람이 될 것입니다.PHP 태그 시스템

그래서 내가 필요로하는 것은 나중에 SQL 쿼리를 위해 배열에 문자열의 모든 태그를 저장하는 것입니다.

어떻게하면됩니까?

UPDATE

지금은이 코드를 가지고 : @ 존 @sandra 등을 어떻게에서 @ 기호를 제거 할 수 있습니다

$string = $_POST["tags"]; 
$output = preg_replace("/@([^\s]+)/", "<a href=\"?tag=$1\">$1</a>", $string); 
$finalOutput = explode(" ", $string); 
$count = count($finalOutput); 
$i = 0; 
while($i < $count) { 
echo $finalOutput[$i]; 
$i = $i + 1; 
} 

문제는 태그 출력에 다음과 같이하는 것이,이다 출력?

+0

'preg_match','explode','insert into' – Ohgodwhy

답변

1
$array = explode(' ', $string); 

이 코드 :)을 시도해

$count = count($array); 
$tag_array = array(); 
$j=0; 
for($i=0;$i<$count;$i++) 
{ 
    if(substr($array[$i],0,1)==='@') 
    { 
    $tag= ltrim ($array[$i],'@'); 
    $tag_array[$j] = $tag; 
    $j++; 
    } 
} 

print_r($tag_array); 

당신이 더 도움이 :)

+1

당신은 환영합니다 :) 정답으로 chosing 해 주셔서 감사합니다. –

1

가장 간단한 사용하는 것입니다 원하는 경우 알려 preg_match_all :

$string = "@Erol Simsir @Hakan Simsir"; 
preg_match_all("/@(\w+)/", $string, $output); 
print_r($output[0]); 
0

이 스크립트에 문제가 있음을 확인했습니다.

$string = $_POST["tags"]; 
$output = preg_replace("/#([^\s]+)/", "<a href=\"?tag=$1\">$1</a>", $string); 
$finalOutput = explode(" ", $output); 
$count = count($finalOutput); 
$i = 0; 
while($i < $count) { 
    echo $finalOutput[$i] . "<br />"; 
    $i = $i + 1; 
} 

또한 @ 기호가없는 모든 단어가 나옵니다. 폼에 'JohnDoe'를 삽입하면 해당 텍스트도 허용되지만 @ 기호가있는 텍스트 만 받아 들여야합니다. 그래서 'JohnDoe'를 스크립트에 삽입하면 유효 태그가 아니라는 것을 검증해야합니다. 입력이 '@john @steve'등과 같이 될 때만 작동합니다.