关于 PHP preg_match 的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
madpecker009
V2EX    PHP

关于 PHP preg_match 的问题

  •  
  •   madpecker009 2020-07-07 10:35:17 +08:00 2682 次点击
    这是一个创建于 1925 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个需求,前端传过来的是图片是 base64 编码过的,我在后端需要进行接码,存储文件,然后将文件路径写入到 mysql 中。现在碰到一个问题。preg_match()就是匹配不到 base64 文件中的图片格式。实在是无解了。 后端是 php thinkphp5.1 php7.2.1

    微信图片_20200707103133.png

    第 1 条附言    2020-07-07 14:00:45 +08:00
    preg_match('/^(data:\s*image\/(\w+);base64,)/', trim($base64_image_content,'"'), $result)
    将字符串两侧的双引号去掉即可。感谢大家帮助
    NCry
        1
    NCry  
       2020-07-07 11:12:36 +08:00
    把 $base64_image_content 打印出来看看呢
    madpecker009
        2
    madpecker009  
    OP
       2020-07-07 11:16:19 +08:00
    @NCry 打印出来就是想$example 那样的。作为实参传递进去就是不可以了。。
    whoami9894
        3
    whoami9894  
       2020-07-07 11:23:09 +08:00
    什么传递实参,你是说传字符串字面量吧。图片里$example 结尾没逗号,当然匹配不到
    TORYOI
        4
    TORYOI  
       2020-07-07 11:32:01 +08:00   1
    正则我测试正常,你再确认一下$base64_image_content 的内容,var_dump 看看,看有没有空格或者转码之类的
    mitu9527
        5
    mitu9527  
       2020-07-07 11:36:24 +08:00
    扣掉输出和返回,一共 5 行代码都不到,有这么“无解”么,单步调试一下,眼睛瞪大点。自己解决后把帖子给沉了吧。
    KasonPasser
        6
    KasonPasser  
       2020-07-07 11:42:43 +08:00
    这是正则的问题,与语言关系不大。
    Xusually
        7
    Xusually  
       2020-07-07 12:03:52 +08:00
    preg_match('/^(data:\s*image\/(\w+);base64,)/',$base64_image_content,$result)

    -->

    preg_match('/^(data:\s*image\/(\w+);base64)/',$base64_image_content,$result)
    zhyt0520
        8
    zhyt0520  
       2020-07-07 12:20:09 +08:00 via Android
    规则最后有个逗号?
    faraone
        9
    faraone  
       2020-07-07 13:57:19 +08:00
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $img, $rt)) {
    $mime = $rt[2];
    }
    madpecker009
        10
    madpecker009  
    OP
       2020-07-07 14:01:55 +08:00
    @faraone
    @zhyt0520
    @Xusually
    @KasonPasser
    @KasonPasser
    @mitu9527
    @mitu9527
    @TORYOI
    @whoami9894
    @whoami9894
    @NCry
    preg_match('/^(data:\s*image\/(\w+);base64,)/', trim($base64_image_content,'"'), $result)
    修改成这样即可。取出两侧的引号
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1521 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 16:37 PVG 00:37 LAX 09:37 JFK 12:37
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86