1

次のような文字列があります。

*"Hola @user1,@user2. ¿Que tal ayer con@user3 en #el_parque?"*

ユーザーが存在するかどうかを抽出し@mentionsて分析したい。@存在しない場合は、タグを削除します。

文字列を解析するにはどうすればよいですか?

私はこの機能で開発します

if(!empty($Timeline)){
        $CI =&get_instance();

        $words = explode(" ", $Timeline);
        $renderTimeline = "";

        $patternu = '@([a-zA-Z09]+)';
        $patternm = '/([#]{1})([a-zA-Z0-9\_]+)/';

        if(!isset($CI->usuarios_model)){$CI->load->model('usuarios_model');}
        if(!isset($CI->juegos_model)){$CI->load->model('juegos_model');}

        foreach($words as $word){
            if(preg_match($patternu,$word)){ //mencion
                $word = preg_replace($patternu, '$0', $word);
                echo $word;
                $usuario = $CI->usuarios_model->get(null,preg_replace($patternu, '\2', $word));
                if(!$usuario){$word = substr($word,1);}
            }elseif(preg_match($patternm,$word)){ //juego
                $juego = $CI->juegos_model->existJuego(null,preg_replace($patternm, '\2', $word));
                if(!$juego){$word = substr($word,1);}
            }

            $renderTimeline.=" ".$word;
        }

        return trim($renderTimeline);
    }
4

2 に答える 2

0

これには REGEX を使用できます"@([a-zA-Z09]+)"。後でユーザーが存在しない場合は、に置き換えmatcher.group()matcher.group(1)ください。最初のものにはキャプチャされた文字列全体が@あり、2番目のものには最初のグループのみがあります(例:ユーザー名なし@)

于 2013-10-18T11:34:43.580 に答える