当前位置: 代码迷 >> PHP >> $str=preg_replace("/\[attach\]/is""111"$str); 这一句怎么把111替换成可以执行的PHP代码
  详细解决方案

$str=preg_replace("/\[attach\]/is""111"$str); 这一句怎么把111替换成可以执行的PHP代码

热度:558   发布时间:2016-04-28 18:36:21.0
$str=preg_replace("/\[attach\]/is","111",$str); 这一句如何把111替换成可以执行的PHP代码
$str=preg_replace("/\[attach\]/is","111",$str);  这一句如何把111替换成可以执行的PHP代码

比如$str=preg_replace("/\[attach\]/is","<img src="<?=$row[pict]?>" width="280"/>",$str);  结果出来后成字符了
------解决方案--------------------
这个是BBCODE的PHP替换。你应该是想实现类似DISCUZ的那种附件BBCODE。
要想回调可以使用 preg_replace_callback。


<?php 

//author: default7<default7#zbphp.com
$str = preg_replace_callback("/\[attach\](\d+)\[\/attach\]/isUe",function($attachId = 0){
//todo 
$row = $db->query("select * from tb where id=$id ")->row();
return '<img src="'.$row['pic'].'" />';
},$str);


原理如上,具体代码自己测试一下。




------解决方案--------------------
function get($id) {
  //$value = 这里是相关操作的代码
  return $value;
}
$str = preg_replace("/\[(attach)\]/ise", "get('$1')", $str);

也可以
function get($r) {
  //$value = 这里是相关操作的代码
  return $value;
}
$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);



  相关解决方案