扫码关注官方订阅号
俺的正则比较菜,现在有个正则替换的问题一直搞不定,需求是这样的:
一些内容里的标签
(这里有任意内容和标签)( 这里也有任意内容和标签)
然后项替换成这样:
简单说就是img外面包上figure然后抽出来放到P后面,然后用preg_replace该怎么写呢?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
我可否理解为,
提取p下面的所有img标签到p外,如果是多个img,这个需要使用preg_match才行
并且p里面会有其他标签,除了p标签外
如果里面只有一个img
//正则 $p = '#.*?)>(?.*?)(?\)(?.*?)#is'; //替换 $r = '$2$4$3'; //原内容 $s = 'fsdfsdfsfkolja;ad;lasd'; echo preg_replace($p, $r, $s); // 结果: // fsdfsdfsfkolja;ad;lasd
.*?)>(?.*?)(?\)(?.*?)
$2$4
fsdfsdfsfkolja;ad;lasd
有多个img
$s = 'fsdfsdfsfkolja;ad;lasdasdaa'; echo preg_replace_callback('#.*?)>(?.*?)#is', function($matches) { preg_match_all('##is', $str = $matches[0], $matches1, PREG_OFFSET_CAPTURE ); foreach (array_reverse($matches1[0]) as $v) $str = substr_replace($str, '', $v[1], strlen($v[0])); return $str.''.implode('',array_map(function($v){return $v[0];}, $matches1[0])).''; }, $s); // 结果: // fsdfsdfsfkolja;ad;lasd asdaa
.*?)>(?.*?)
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我可否理解为,
提取p下面的所有img标签到p外,如果是多个img,这个需要使用preg_match才行
并且p里面会有其他标签,除了p标签外
如果里面只有一个img
有多个img