0

问题是当使用 $1 作为数组的索引时,它没有显示或评估变量。

        Data Table
        fname
        kim
        bob


$exp="<input type='text' name='fname' value='\"fname\"'>";

while($row=mysql_fetch_array($data)) {
    $dstr=preg_replace('/"([^"]+)"/', $row["$1"], $exp); 
    echo $dstr;
}

这会导致一个空白文本字段。

<input type='text' name='fname' value=''> x2

期望结果:

<input type='text' name='fname' value='kim'><input type='text' name='fname' value='bob'>
4

2 回答 2

1

preg_replace 的第二个参数必须是一个字符串。它是替换匹配字符串的模板。你不知道 preg_replace 之前的模板。

所以,你需要使用preg_replace_callback

像这样的东西:

$dstr=preg_replace(
    '/"([^"]+)"/', 
    function(array $matches)use($row)
        {return $row[$matches[1]];}, 
    $exp);
于 2013-10-25T01:05:34.977 回答
0

也许你喜欢这样:

$exp = "<input type='text' name='fname' value='blahblah' />";
while($row = mysqli_fetch_assoc($data)){
  foreach($row as $v){
    $dstr = preg_replace('/^(.+)blahblah(.+)$/', "$1$v$2", $exp); 
    echo $dstr;
  }
}
于 2013-10-25T01:15:30.503 回答