$str=preg_replace("/\[attach\]/is","111",$str); 这一句如何把111替换成可以执行的PHP代码
比如$str=preg_replace("/\[attach\]/is","d31330719347355dde54b6e960349daa" width="280"/>",$str); 结果出来后成字符了
$message=preg_replace("/\[url\](http:[^\]]*?)\[\/url\]/ies","_cuturl('\\1')",$message);function _cuturl($msg){ $new=cutstr($msg,20); return $new;}
$str=preg_replace("/\[attach\]/is","9c25ae613204c92214d4973e83524f6e",$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);
这个是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);
$str = preg_replace_callback("/\[attach\]\s*(\d+)\s*\[\/attach\]/isUe",function($match){ //todo $id = $match[1]; $row = $db->query("select * from tb where id=$id ")->row(); return $row ? '<img src="'.$row['pic'].'" />' : '';},$str);
$str=preg_replace("/\[attach\]/is","ce2ec35d500ffa8aba3f6c0b5474bb9b",$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);
$str = preg_replace_callback("/\[attach\]\s*(\d+)\s*\[\/attach\]/isUe",function($match){ //todo $id = $match[1]; $row = $db->query("select * from tb where id=$id ")->row(); return $row ? '<img src="'.$row['pic'].'" />' : '';},$str);
你的 php 版本是多少?
php5.2
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);
dz的手机版不显示图片,所以我想自己写一个 显示人页面。
function get($r) { $value = SELECT * FROM `bbs_forum_attachment_$row[tableid]` where tid =id return $value;}$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);
你 print_r($r) 就可看到
你 print_r($r) 就可看到
function get($r) { $value = "SELECT * FROM `bbs_forum_attachment_9` where tid =$r" return $value;}$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);
第二行的结尾分号少写了。
第二行的结尾分号少写了。
function get($r) { $value = "SELECT * FROM `bbs_forum_attachment_9` where tid =$r"; return $value;}$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);
我改成单引号前台输出 SELECT * FROM `bbs_forum_attachment_9` where tid =$r
是不是这段php语句没有执行,直接转成文本了
26588 从哪里来的? 在get方法里面 print_r($r); 得到什么?
改成$str = preg_replace_callback("/\[attach\](.+?)\[\/attach\]/is", "get", $str); 之后
输出:SELECT * FROM `bbs_forum_attachment_9` where tid =Array
26588 从哪里来的? 在get方法里面 print_r($r); 得到什么?
看不懂了,print_r($r); 怎么可能是1呢?
php5.2
php5.2 怎么写呢