2016-08-02 4 views
-1

내 코드 교체하지 : 나는 그와 관련된 사용자 ID와 @ 결국 usernames를 대체하기 위해 노력하고않는 str_replace는

$string = "@admin BLA BLA @mark BLA BLA BLA @koko BLA BLA";  
preg_match_all("/(@\w+)/", $string, $matches); 

foreach ($matches[0] as $usernames) { 
    $user = (" SELECT * FROM user WHERE username = '" . $usernames . "' "); 
    while ($row = mysql_fetch_array($user)) { 
     $string = str_replace($usernames, $row["userid"], $string); 
    } 
} 
echo $string; 

을,하지만 텍스트를 인쇄 할 때 출력은 원문과 동일합니다.

출력 : @admin BLA BLA @mark BLA BLA BLA @koko BLA BLA

+1

나는 당신의 데이터베이스가'@'접두어로 사용자 이름을 포함하고 의심한다. 효과를 얻으려면 그걸 벗겨야합니다. –

+1

또한 일치하는 알고리즘 (이 경우 사용자 ID 가져 오기)을 실행하려면 ['preg_replace_callback'] (http://php.net/preg-replace-callback)을 사용하십시오. –

+0

모든 내용을 바꾸지 않고 $ string 안에 저장합니까? 나는 쓰는 것을 의미한다. – M98

답변

0

귀하의 SQL 쿼리 SELECT * FROM user WHERE username = '@admin' 같은 것 - 당신의 기대하지 수 있습니다.

이 수정 프로그램을보십시오 :

$user = (" SELECT * FROM user WHERE username = '" . substr($usernames, 1) . "' ");

희망을 당신을 도울 수 :

+0

고마워요. 문제;) – user3745594