永发信息网

php 关于str_replace 的奇怪问题,该函数有bug?

答案:1  悬赏:0  手机版
解决时间 2021-02-28 00:20
做了一个批量在线翻译功能,功能是把html标签替换成数字,以免被翻译,结果替换好后,生成一大串连续的数字,由于api经常有长度限制,所以必须在此替换短的,于是问题来了,$ss为替换html后的原文

$ss="lankii1lankii:55 lankii1lankiilankii3lankii?? lankii4lankiilankii5lankiilankii5lankii【lankii7lankii型号】7010lankii7lankiilankii9lankiilankii10lankiilankii3lankiilankii4lankiilankii5lankiisimhei【颜 色】红、橙、灰lankii7lankiilankii9lankiilankii10lankiilankii3lankiilankii4lankiilankii5lankii【比 例】1:16lankii7lankiilankii9lankiilankii10lankiilankii3lankiilankii4lankiilankii5lankii【适合年龄】5lankiikii4lankiilankii5lankii jewelryself.com【特 点】lankii7lankiilankii9lankiilankii10lankiilankii3lankiilankii4lankiilankii5lankii①按照国际标准原厂1:16比例生产,风向盘遥控。lankii77lankii(注意:此款车不具备重力感应)lankii9lankiilankii7lankiilankii5lankiilankii51lankiilankii5lankii②lankii7lankiilankii7lankiilankii5lankii模型前后车轮均可遥模型收藏者的最爱 适合大人小朋友。lankii7lankiilankii9lankiilankii10lankiilankii3lankiilankii4lankiilankii5lankiilankii112lankiilankii1lankiilankii1lankiilankii115lankiilankii1lankiilankii1lankiilankii118lankiilankii1lankiilankii1lankii1:16仿真名车,三款混装,随机发货。lankii7lankiilankii9lankiilailankii4lankiilankii5lankiilankii127lankiilankii1lankiilankii1lankiilankii130lankiilankii1lankiilankii1lankiilankii133lankiilankii1lankiilankii1lankii遥控器概况,遥控器需要四节5号电池,需要自备。lankii77lankii(此款车不配备重力感应,左右转需要通过扭转风向盘控制)";
//问题长度限制,删除部分
$regx="/[0-9a-z: \?\/r\/n]+/ie";

preg_match_all($regx,$ss,$matches);
print_r($matches[0]); //正常需要提取的字符串;echo str_replace($matches[0],'99',$ss); //替换结果根本不是你想要的结果,我用foreach在 强制(string)下,还是那样的问题,用preg_replace也是这个



比如 $matches[0][0]="lankii34543543lsnkiii lsnser23453454535errtrt";
用 str_replace,他是支持数组替换的

清晰点用 foreach 替换,即
foreach( $matches[0] as $m){
$ss=str_replace($m,'99',$ss);

}
正常的情况应该是把含有$matches[0][0]的字符串替换掉了,而实际呢,他只在前2次左右的正常替换,后面程序只替换其中的数字为99。preg_replace也是一样的结果,如果单独,用双引号拿出来替换是正常的,
其中我已经设置了 ini_set('pcre.backtrack_limit', 999999999);所以不存在替换字符串长度问题,编码是UTF-8
---------------------搞定-----------------
a:5:{жно место, где русский хит голоден и электричество воды низкой скорости восстановления
最佳答案
我没搞明白你到底想怎样删减,不过你说下所谓的bug,
你知道preg_match_all匹配的结果matches是个二维数组吗,
matches[0]这个是一个数组啊,
str_replace将ss字符串中所有在matches[0]数组中的子串都替换为99
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
信用卡欠四万多利息一天是多少
永昌东路/S343(路口)地址在哪,我要去那里办
雷柏8100怎么对码呀
推荐都市小说,类似阿三瘦马的《红颜》!!!
在网上买星月菩提,可靠不靠我看上一窜388元
如果在初中三年一年长一厘米那高中还能长个么
情侣在楼道里亲热让人看见怎么办
森航机电设备公司我想知道这个在什么地方
夏利n5后备箱锁拉线多少钱
欣妍化妆品在哪里啊,我有事要去这个地方
有什么小宠物可以养的
老是有人连我家无线网,天天连的那种,是熟人
运用通真修辞手法的句子
DNF福娃怎么打开后没反应
洗发水中含有三氯生有什么有害作用?
推荐资讯
哪部小说女主叫苏蔷
前几天钥匙不小心从一楼掉进那个洞里面去了,
带贾字男生快手昵称
子线什么牌子好
中国电信木城小魏营业厅地址在哪,我要去那里
仓边地址在什么地方,想过去办事
营运车是哪些车?自己开店买的车算营运车吗?
我是2006年入伍,2008年退伍,在家待了8年,
在电脑文件里怎么发 文件给yy语音
青少年书法培训疏导工作室这个地址在什么地方
男孩,10个月,母乳加米糕喂养,未添加其他副
博雅书店这个地址在什么地方,我要处理点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?