2013-07-31 3 views
0

트위터 계정을 식별하는 대체 기능을 만들었습니다. 데이터에 트위터 계정이 있으면 내 내부 페이지에 대한 링크를 만들고 싶습니다.Preg_Replace_Callback 일치 항목을 배열로 대체

//Creates a link for users 
    $tester = preg_replace_callback(
    '/\[email protected](\w+)/', 
     "BrewIdFinder", 
    $tester); 


function BrewIdFinder($matches){ 
$result3 = mysql_query("SELECT brew_id FROM places WHERE screen_name = '".$matches."' LIMIT 1"); 
     $num_rows = mysql_num_rows($result3); 
     if($num_rows==0){ 
     $x= '<a href="http://twitter.com/'.$matches.'" target="_new">@'.$matches.'</a>'; 
     }else{ 
     while($row = mysql_fetch_array($result3)) 
     { 
     $brewid= $row['brew_id']; 
     } 
     $x= '<a href="http://www.brewzinga.com/places/'.$brewid.'" target="_new">@'.$matches.'</a>'; 
     } 
return $x; 
} 

각 Twitter Screenname에 대한 답을 배열로받습니다. 무엇이 잘못되었는지 도움을 얻을 수 있습니까?

+0

은'$ tester' 배열입니까? – Orangepill

+0

$ tester는 문자열입니다. 그것은 @screenname이 링크로 바뀌도록 찾기 위해 분석하려고하는 트윗입니다. –

+0

코드에서 [0]과 일치하는 배열을 추가 했으므로 문제가 해결되었습니다. 어떤 이유로 그것은 여러 경기를 통과합니다. 어쩌면 문자열에서 테스트 할 카운트 수를 지정해야했습니다. –

답변

1

나는 그것을 고칠 수 있었다. 검토 할 일치 항목을 지정해야했습니다. 도와 주셔서 감사합니다.

function BrewIdFinder($matches){ 
$sweet= substr($matches[0], 2); 
$result3 = mysql_query("SELECT brew_id FROM places WHERE screen_name like '".$sweet."'"); 
    $num_rows1 = mysql_num_rows($result3); 
    if($num_rows1==0){ 
    $x= ' <a href="http://twitter.com/'.$sweet.'" target="_new">@'.$sweet.'</a>'; 
    }else{ 
    while($row = mysql_fetch_array($result3)) 
    { 
    $brewid= $row['brew_id']; 
    } 
    $x= ' <a href="http://www.brewzinga.com/places/'.$brewid.'" target="_new">@'.$sweet.'</a>'; 
     } 
return $x; 
} 
관련 문제