cari

Rumah  >  Soal Jawab  >  teks badan

fungsi php tidak boleh memanggil nilai ungkapan biasa

Untuk menyelesaikan masalah, seperti dalam soalan, tujuannya adalah untuk membaca ID pengguna yang ditanda dalam kandungan dan mendapatkan semula nama pengguna daripada pangkalan data.
Masalah, hanya "$1" boleh dibaca, tetapi nilainya tidak boleh diperoleh.

function usvid($csse,$uvid){
    global $db,$DBprefix;
    echo $csse.$uvid; $query_usersid="select * from ".$DBprefix."users where Uid='$csse' order by Uid desc"; $sql_usersid=mysql_query($query_usersid manakala ($usersid=mysql_fetch_array(); $sql_usersid)){
    $bbs_H=$usersid['Nama Pengguna'];
    pulangkan $bbs_H;
    }

fungsi vubb($str){
    $str=preg_replace("/\[userid=(.+?)\](.+?)\[\/userid\]/is",usvid("$1",'$2'),$str);
    pulangkan $str;
    }
    
    echo vubb("[userid=10000]xy[/userid]");
怪我咯怪我咯2797 hari yang lalu423

membalas semua(3)saya akan balas

  • 巴扎黑

    巴扎黑2017-05-16 13:02:47

    1. Parameter kedua preg_replace hanya boleh berupa rentetan atau tatasusunan, penggunaan fungsi adalah salah

    2. Tukar kepada preg_replace_callback yang betul, parameter kedua ialah fungsi panggil balik

    Tulis semula contoh seperti berikut (tidak diuji sama ada betul atau tidak):

    function usvid($match) // 被修改
    {
        $csse = $match[1]; // 新增行
        $uvid = $match[2]; // 新增行
        
        global $db, $DBprefix;
        echo $csse.$uvid; 
        $query_usersid = "select * from ".$DBprefix."users where Uid='$csse' order by Uid desc";
        $sql_usersid = mysql_query($query_usersid); 
        while ($usersid = mysql_fetch_array($sql_usersid)) {
            $bbs_H = $usersid['UserName'];   
        } 
        return $bbs_H; 
    }
    
    function vubb($str)
    {
        $str = preg_replace_callback("/\[userid=(.+?)\](.+?)\[\/userid\]/is", "usvid", $str); // 修改行
        return $str; 
    } 
        
    echo vubb("[userid=10000]xy[/userid]");

    Hanya 4 baris sahaja penulis boleh cuba lagi.

    balas
    0
  • 怪我咯

    怪我咯2017-05-16 13:02:47

    Terima kasih atas jemputan!

    Kalau begitu, ada sebarang soalan?

    Tafsiran saya tentang sql anda ialah:

        select * from users where Uid='' order by Uid desc

    balas
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:02:47

    function usvid($csse,$uvid) // 被修改
    {
        global $db, $DBprefix;
        $query_usersid = "select * from ".$DBprefix."users where Uid='$csse' order by Uid desc";
        return  $query_usersid;
        $sql_usersid = mysql_query($query_usersid); 
        while ($usersid = mysql_fetch_array($sql_usersid)) {
            $bbs_H = $usersid['UserName'];   
        } 
        return $bbs_H; 
    }
    
    function vubb($str)
    {
        $str = preg_replace("/\[userid=(.+?)\](.+?)\[\/userid\]/is", usvid("",''), $str); // 
    } 
        
    echo vubb("[userid=10000]xy[/userid]");

    Saya telah mengujinya dan output sql adalah sama seperti yang anda minta
    pilih * daripada pengguna di mana pesanan Uid='10000' mengikut Uid desc

    balas
    0
  • Batalbalas