preg_replace_callback替换preg_replace

php中文网
发布: 2016-06-23 13:51:49
原创
1269人浏览过

$tem =   $arr['invoice_type'];
echo "

";  <br /> print_r($tem);  <br /> 输出  <br /> a:2:{s:4:"type";a:3:{i:0;s:8:"个人发票";i:1;s:8:"企业发票";i:2;s:0:"";}s:4:"rate";a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}}  <br />  <br /> $teem []= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $arr['invoice_type'] );  <br /> echo "<pre class="brush:php;toolbar:false;">";  <br /> print_r($teem);  <br /> 输出  <br /> Array  <br /> (  <br />     [0] => a:2:{'s:'.strlen('type').':"type";'a:3:{i:0;'s:'.strlen('个人发票').':"个人发票";'i:1;'s:'.strlen('企业发票').':"企业发票";'i:2;'s:'.strlen('').':"";'}'s:'.strlen('rate').':"rate";'a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}}  <br /> )  <br />  <br /> $teemm []= preg_replace_callback('!s:(\d+):"(.*?)";!s', function ($matches) {return strlen('$2').':\"$2\";';}, $arr['invoice_type'] );  <br /> echo "<pre class="brush:php;toolbar:false;">";  <br /> print_r($teemm);  <br /> 输出  <br /> Array  <br /> (  <br />     [0] => a:2:{2:\"$2\";a:3:{i:0;2:\"$2\";i:1;2:\"$2\";i:2;2:\"$2\";}2:\"$2\";a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}}  <br /> )  <br />  <br /> 如何让preg_replace_callback输出的信息和preg_replace输出的一样  <p>  </p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/1420">
                            <img src="https://img.php.cn/upload/ai_manual/000/000/000/175680088147181.jpg" alt="Swapface人脸交换">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/1420">Swapface人脸交换</a>
                            <p>一款创建逼真人脸交换的AI换脸工具</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="Swapface人脸交换">
                                <span>45</span>
                            </div>
                        </div>
                        <a href="/ai/1420" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="Swapface人脸交换">
                        </a>
                    </div>
                 </p> <br /> <h2>回复讨论(解决方案)</h2> <p class="sougouAnswer">  不知道你要干什么  <br /> 实例的结果并不对! </p> <p class="sougouAnswer">  第二个输出弄错了是下面的  <br /> $teem []= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $arr['invoice_type'] );  <br /> echo "<pre class="brush:php;toolbar:false;">";  <br /> print_r($teem);  <br /> 输出  <br /> Array  <br /> (  <br />     [0] => a:2:{s:4:"type";a:3:{i:0;s:8:"个人发票";i:1;s:8:"企业发票";i:2;s:0:"";}s:4:"rate";a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}}  <br /> ) </p> <p class="sougouAnswer">  <p class="yy">   不知道你要干什么   <br /> 实例的结果并不对!  </p>  <br />  <br /> 第二个输出弄错了是下面的  <br /> $teem []= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $arr['invoice_type'] );  <br /> echo "<pre class="brush:php;toolbar:false;">";  <br /> print_r($teem);  <br /> 输出  <br /> Array  <br /> (  <br />     [0] => a:2:{s:4:"type";a:3:{i:0;s:8:"个人发票";i:1;s:8:"企业发票";i:2;s:0:"";}s:4:"rate";a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}}  <br /> )  </p> <p class="sougouAnswer">  <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="sycode" name="code">$s = preg_replace_callback('/s:\d+:"(.+?)";/s',		function($r) {			$n = strlen($r[1]);			return "s:$n:\"$r[1]\";";		}, $s);
登录后复制
登录后复制

$s = preg_replace_callback('/s:\d+:"(.+?)";/s',		function($r) {			$n = strlen($r[1]);			return "s:$n:\"$r[1]\";";		}, $s);
登录后复制



大神我按照你的改了输出数据是这样
代码
 $teem = preg_replace_callback('/s:\d+:"(.+?)";/s',
            function($r) {
                $n = strlen($r[1]);
                return "s:$n:\"$r[1]\";";
            }, $arr['invoice_type'] );
        echo "
";  <br>         print_r($teem);  <br> 输出  <br> a:2:{s:4:"type";a:3:{i:0;s:8:"个人发票";i:1;s:8:"企业发票";i:2;s:12:"";}s:4:"rate";a:3:{i:0;d:6;i:1;d:6;i:2;d:0;}}  <br><br> 企业发票后边S:0:""   变为了s:12:""  多了12长度,这个怎么来的  <br><p class="sougouAnswer">  没考虑值为空的情况  <br> 把 '/s:\d+:"(.+?)";/s'   <br> 改为 '/s:\d+:"(.*?)";/s' </p> <p class="sougouAnswer">  </p><p class="yy">   没考虑值为空的情况   <br> 把 '/s:\d+:"(.+?)";/s'    <br> 改为 '/s:\d+:"(.*?)";/s'  </p>  <br><br> 万分感谢 
登录后复制
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号