> 백엔드 개발 > PHP 튜토리얼 > 初学者求教 怎么循环替换文章中的附件标签

初学者求教 怎么循环替换文章中的附件标签

WBOY
풀어 주다: 2016-06-13 12:24:06
원래의
869명이 탐색했습니다.

菜鸟求教 如何循环替换文章中的附件标签

本帖最后由 qq33184 于 2015-09-06 00:32:33 编辑
<br />$article['content'] = str_replace('[attach_40]', $this->get_attach_url('40'), $article['content']);<br />$article['content'] = str_replace('[attach_41]', $this->get_attach_url('41'), $article['content']);<br />$article['content'] = str_replace('[attach_42]', $this->get_attach_url('42'), $article['content']);<br /><br />替换规则<br />$article['content'] = preg_replace('/\[attach_(\d+)\]/is', $this->get_attach_url('\1'), $article['content']);<br />
로그인 후 복사


说明:
$article['content'] 文章内容
[attach_42] 附件标签 其中数字是改附件在数据表中的ID
get_attach_url()方法可以获得附件的完整路径 如:http://127.0.0.10/attach/2015-09-05/1441449289kWkS.jpg

菜鸟求教 如何循环替换文章中的附件标签
------解决思路----------------------
php5.5 以下可以
$article['content'] = preg_replace('/\[attach_(\d+)\]/ise', '$this->get_attach_url("\1")', $article['content']);

所有版本都可以
$article['content'] = preg_replace_callback('/\[attach_(\d+)\]/is', array($this, 'get_attach_url'), $article['content']);
但需要修改 get_attach_url 方法(单值参数改数组参数)

php5.4及以上还可以
$article['content'] = preg_replace('/\[attach_(\d+)\]/is', function($m) { return $this->get_attach_url($m[1]; }, $article['content']);
php5.3 虽然已经支持闭包,但闭包中不能使用 $this


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿