第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何循環(huán)、匹配和替換?

如何循環(huán)、匹配和替換?

PHP
溫溫醬 2021-07-03 13:19:06
我有多個(gè)帶有相同花括號(hào)的字符串,如果計(jì)數(shù)為 1,則需要將它們替換為動(dòng)態(tài)字符串,然后需要替換第一次出現(xiàn),如果計(jì)數(shù)為 2,則替換第二次出現(xiàn),依此類推,直到條件滿足。<?phpinclude_once("con.php");$db = new Da();$con = $db->con();$String = "{{ONE}} {{TWO}} {{THREE}} {{FOUR}} {{FIVE}} {{SIX}}"; $Count = 1; if(preg_match_all("/\{\{[^{}]+\}\}/", $lclString, $matches)) {    foreach ($matches[0] as $match) {        $Count++;        $Query = "SELECT link FROM student WHERE linkVal = '".$match."'";        $Result = $con->query($Query);        if($row = $Result->fetch(PDO::FETCH_ASSOC)) {            $NewValue = preg_replace("/\{\{[^{}]+\}\}/", $row["link"], $String);        }    }        echo json_encode($NewValue); } ?>如果第一次出現(xiàn),{{ONE}} 應(yīng)該用 $row["link"] 替換為新值,然后用新值替換 {{TWO}},依此類推。
查看完整描述

3 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

在每個(gè)匹配的循環(huán)中preg_replace,我建議您使用str_replace:


if(preg_match_all("/\{\{[^{}]+\}\}/", $lclString, $matches)) {

    $NewValue = $String;

    foreach ($matches[0] as $match) {

        $Count++;

        $Query = "SELECT link FROM student WHERE linkVal = '".$match."'";

        $Result = $con->query($Query);


        if($row = $Result->fetch(PDO::FETCH_ASSOC)) {

            $NewValue = str_replace($match, $row["link"], $NewValue);

            //          ^^^^^^^^^^^^^^^^^^

        }

    }

    echo json_encode($NewValue);


查看完整回答
反對(duì) 回復(fù) 2021-07-09
?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以通過(guò)在一個(gè)查詢中獲取所有替換值來(lái)極大地簡(jiǎn)化代碼:


$String = "{{ONE}} {{TWO}} {{THREE}} {{FOUR}} {{FIVE}} {{SIX}}";

if(preg_match_all("/\{\{[^{}]+\}\}/", $String, $matches)) {

    $Query = "SELECT linkVal, link FROM student WHERE linkVal IN('".implode("','", $matches[0])."')";

    $Result = $con->query($Query);

    if ($rows = $Result->fetchAll(PDO::FETCH_ASSOC)) {

        $NewValue = str_replace(array_column($rows, 'linkVal'), array_column($rows, 'link'), $String);

    }

    echo json_encode($NewValue);


查看完整回答
反對(duì) 回復(fù) 2021-07-09
?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

您的代碼存在一些問(wèn)題,您需要確保 中的變量preg_match_all()是您嘗試搜索的字符串。


但主要問(wèn)題在于更換部件。您需要替換當(dāng)前匹配值 ( $match) 并將其替換為新字符串 - 目前您總是替換原始字符串中的新匹配。在這里,我$NewValue從原始字符串創(chuàng)建并不斷替換其中的值...


if(preg_match_all("/\{\{[^{}]+\}\}/", $String, $matches)) {

    $NewValue = $String;

    foreach ($matches[0] as $match) {

        $Count++;

        $Query = "SELECT link FROM student WHERE linkVal = '".$match."'";

        $Result = $con->query($Query);


        if($row = $Result->fetch(PDO::FETCH_ASSOC)) {

            $NewValue = preg_replace("/".preg_quote($match)."/", 

                              $row["link"], $NewValue);

        }

    }


    echo json_encode($NewValue);


}

您還應(yīng)該考慮使用準(zhǔn)備好的語(yǔ)句,因?yàn)槟壳澳赡軙?huì)遇到 SQL 注入問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2021-07-09
  • 3 回答
  • 0 關(guān)注
  • 187 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)