php 循环替换,PHP-如何循环,匹配和替换?

我有多个带有相同花括号的字符串,如果计数为1,则希望将其替换为动态字符串,然后需要替换第一个匹配项;如果计数为2,则替换第二个匹配项,以此类推,直到条件满足为止.

include_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);

}

?>

如果第一次出现,{{ONE}}应该用$row [“ link”]替换为新值,

其次,用新值替换{{TWO}},以此类推.

解决方法:

在每次比赛的循环中,建议不要使用str_replace而不是使用preg_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);

}

标签:preg-match-all,php,regex,preg-replace,regex-group

来源: https://codeday.me/bug/20191011/1894650.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值