PHP 板


LINE

看板 PHP  RSS
我在官网没看到,但是我测试时有遇到这种状况 参考字串如 $var1='{'json':'xxxxx',{xx..x.x... etc (长度超过 10000) }}'; $var2=1211; $var3=0; 上面是连在一起的,是从档案捞出来的东西 我的目标是把他parse成 $var_arr['var1']='{}'; $var_arr['var2']=1211; $var_arr['var3']=0; 这样的格式 code 如下 do { $var = strpos($str,"$",$var); if($var) { $equal = strpos($str,"=",$var); if($equal) { /* 有等号 */ $end = strpos($str,";",$equal); $new_var_key = substr($str,$var+1,$equal-$var-1); $new_var_val = substr($str,$equal+1,$end-$equal-1); $new_var[$new_var_key]=trim($new_var_val,"'"); $var = $end; } else { break; } } else { break; } } while($var); 但是字串长度很长的那个的结果是错误的 後面两个的结果是正确的 因此是不是 substr 有长度的限制? 还是我的程式有写错呢? -- [There's no undo in your life]                          ●~   ●~ ●~   ●~ ●~   ●~ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.30.6 ※ 编辑: kerash 来自: 114.34.30.6 (09/10 17:00)
1F:→ chaoms:var1内容就含";"符号..就会出现你的错误.. 09/10 17:54
2F:→ kerash:如果有错的话後面两个应该不会正确,但是後面是正确的,只 09/10 17:56
3F:→ kerash:有被取回来的长度错误,所以我才想是不是length有限制 09/10 17:57
目前是先改用把远端抓回来的资料写成档案再重新 include 但是这样後续会变成要写一堆档案,因此想找出原因 ※ 编辑: kerash 来自: 114.34.30.6 (09/10 17:58)
4F:→ chaoms:考虑一下改用eval或serialize/json_encode等方式处理那资料 09/10 17:57
我的第一笔档案就是 json_encode 过的 这份档案算是纪录档,但为了方便该主机使用,所以写成 PHP 格式 <?php $var1='{}'; $var2=xxx; var3=0; ?> 没办法直接把这份档案另存成 json , 因为会牵涉到其他约七个站台 目前要做的是一个管理机制所以才从远端捞回资料 ※ 编辑: kerash 来自: 114.34.30.6 (09/10 18:00)
5F:→ chaoms:第一个回覆..你必须亲自测试一下..有定见会让你看不到真像. 09/10 18:13
6F:→ chaoms:第二个回覆没有限制编几次几维阵列.. 09/10 18:16
7F:→ chaoms:重点是不用在写parser... 09/10 18:16
8F:→ kerash:能详述吗? 我只能确认没有那些会失败的符号,只是不确定切 09/10 20:46
9F:→ kerash:的长度为何。过程中确实是只切应有的次数(我有把位置echo) 09/10 20:47
10F:→ kerash:第一笔资料长度大约是 39 万字元。 09/10 20:47
11F:→ kerash:另外不用写在parser的意思是? 09/10 20:47
12F:→ bibo9901:直接include不就好了 @@ 09/10 21:07
13F:→ kerash:机器不同台,我目前是用写档後include没错 09/10 21:46
14F:→ chaoms:你写的规则是~找第一个$字号再来找第一个=号.. 09/10 22:46
15F:→ chaoms:再来找第一个;号...如果这之间有两个;号..就会你这个问题.. 09/10 22:47
16F:→ chaoms:不用写parser的意思~你不用特意写解析程式~来解析你这个档. 09/10 22:50
17F:→ chaoms:有字串转PHP变数...PHP变数转字串的函示可以用.. 09/10 22:52
18F:→ kerash:你指的是eval的话,因为第一笔资料是使用者可输入的资料 09/10 23:21
19F:→ kerash:所以不好直接转,才会采取用自订parse,至於分号我会注意 09/10 23:22
20F:→ tyf99:请用 regex.. 09/10 23:41
21F:→ kerash:regex 确定有长度限制,要修改php.ini才行,我不一定有权限 09/10 23:45
22F:→ kerash:所以暂时不考虑 09/10 23:45
23F:→ tyf99:关 php 啥事... js regex 可三行解决.. 09/11 00:07
24F:→ kerash:= =我在PHP板不问PHP吗? 我全都是後端执行跟前端无关啊 09/11 00:08
25F:→ tyf99:对不起,看错 09/11 00:18
26F:→ kerash:js确实有substr啦 囧"... 09/11 00:19
27F:→ tyf99:如果档案有几十MB,你可以改用自动机的方式去parse 09/11 00:20
28F:→ kerash:档案最多控制在1MB而已,所以想说执行能快越好,只是不想产 09/11 00:22
29F:→ kerash:生太多的档案而已,目前固定会产生一笔了 09/11 00:23
30F:→ tyf99:我说的自动机是 finite state machine,原理跟 regex 很像 09/11 00:24
31F:→ tyf99:finite state 有画好,基本上就不会 parse 错,速度够快了.. 09/11 00:25
32F:→ kerash:没有特别研究过,不确定适不适合,因为我需求其实很简单.. 09/11 00:28
33F:→ kerash:关於自动机我再看看好了 09/11 00:28







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP