$message=preg_replace("/\[url\](http:[^\]]*?)\[\/url\]/ies","_cuturl('\\1')",$message);function _cuturl($msg){
$new=cutstr($msg,20);
return $new;
}
在正则后面加符号/e,就可以调用函数,在里面就可以执行php的操作
解决方案 »
- 想学PHP,求推荐
- 为什么 我写的删除功能怎么总是提示删除失败?为题出在什么地方 希望大家帮忙 代码如下
- php AES加密 openssl解密失败,帮忙看下代码哪里有问题
- php 通过什么样的方法可以实现发送传真!!!
- 一行代码,WEB服务器不能执行,Zend Development Environment却可以执行,原因是什么??
- 正在开发新的BLOG,可与PW和DZ两大国内论坛完美结合,欢迎大家测试!
- 连接局域网上某机器数据库超时!
- Zend Optimizer 问题
- 强烈推荐:PHP最新手册下载URL,内容极其全面。
- 为什么导出来的数据中文都是乱码??
- 求教怎么查找字符串中的数字,让字符串按数字逐行显示
- thinkphp 整合 phpexcel,设置表格样式的一个问题
要想回调可以使用 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_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);
出现错误提示:Parse error: syntax error, unexpected T_FUNCTION in
指向$str = preg_replace_callback("/\[attach\]\s*(\d+)\s*\[\/attach\]/isUe",function($match){这一行
//$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);
function get($r) {
$value = SELECT * FROM `bbs_forum_attachment_$row[tableid]` where tid =id
return $value;
}
$str = preg_replace_callback("/\[(attach)\]/is", "get", $str); where tid =id 这个ID如何得到
function get($r) {
$value = "SELECT * FROM `bbs_forum_attachment_9` where tid =$r"
return $value;
}
$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);错误提示:Parse error: syntax error, unexpected T_RETURN
呵呵;我改成
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 =Array26588我想要的是SELECT * FROM `bbs_forum_attachment_9` where tid =26588 不要Array 怎么弄
忘了写明,我写的那个要 PHP 5.5+