• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

一种逆天的PHP字符串构造方法.

php 搞代码 4年前 (2022-01-23) 20次浏览 已收录 0个评论

虽然PHP有<<<这种多行字符串的用法,但用着不爽啊,因为最后的结束行不能有空格。看看我写的这种字符串构造方法吧,代码如下:

/**把一个匿名函数的注释转换为字符串     * @param function $closure 匿名函数     * @param array $replace 替换占位字符的内容,占位字符的格式正则表现为{[0-9]+},比如{0}、{1} 其中数值对应$replace的索引     * @return string 返回匿名函数内的注释内容     */    function string($closure,$replace=NULL){        $func = new ReflectionFunction($closure);        $start = $func->getStartLine() - 1;	$end =  $func->getEndLine() - 1;	$filename = $func->getFileName();	$code=implode("", array_slice(file($filename),$start, $end - $start + 1));        $reg="/\\/\\*([^\\0]+)\\*\\//";        $match=array();        preg_match($reg,$code,$match);        if(count($match)>0){            if(!$replace){                return preg_replace("/\\\\\\\/","\\",preg_replace("/\*(\\\\\/)/", "*/", trim($match[1])));            }            if(count($replace)<=0){                return preg_replace("/\\\\\\\/","\\",preg_replace("/\*(\\\\\/)/", "*/*本5文来源gaodai$ma#com搞$$代**码)网@搞代码gaodaima", trim($match[1])));            }            $tmp1=$match[1];            for($i=0;$i<count($replace);$i++){                $r=$replace[$i];                $tmp1=str_replace("{".$i."}", $r, $tmp1);            }            return preg_replace('/\\\\\\\/','\\',preg_replace("/\*(\\\\\/)/", "*/", $tmp1));        }        return "";    }

用法:

$sql=string(function(){/*            select * from table1 T1            left join table2 T2 on T2.id=T1.id            where T1.id={0} && T2.name='{1}'        */},array(101,"ioriliao"));

输出结果:

select * from table1 T1left join table2 T2 on T2.id=T1.idwhere T1.id=101 && T2.name='ioriliao'

版权声明:本文为博主原创文章,未经博主允许不得转载。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:一种逆天的PHP字符串构造方法.
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址