>백엔드 개발 >PHP 튜토리얼 >$str=preg_replace("/[attach]/is""111"$str); 这一句怎么把111替换成可以执行的PHP代码

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-06-13 12:05:351106검색

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

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

<br /><?php <br /><br />//author: default7<default7#zbphp.com<br />$str = preg_replace_callback("/\[attach\](\d+)\[\/attach\]/isUe",function($attachId = 0){<br />	//todo <br />	$row = $db->query("select * from tb where id=$id ")->row();<br />	return '<img  src="/static/imghwm/default1.png"  data-src="'.$row['pic'].'"  class="lazy"  .$row['pic'].'" / alt="$str=preg_replace("/[attach]/is""111"$str);  这一句怎么把111替换成可以执行的PHP代码" >';<br />},$str);<br /><br />

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




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

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



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.