求助: PHP 提取大段字符串中的 img ,然后将处理过的 src 替换回去 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ainpy
V2EX    PHP

求助: PHP 提取大段字符串中的 img ,然后将处理过的 src 替换回去

  •  
  •   ainpy 2018-06-02 17:53:26 +08:00 3386 次点击
    这是一个创建于 2692 天前的主题,其中的信息可能已经有所发展或是发生改变。
    具体需求是,把 A 程序数据库的文章批量导入 B 程序数据库,

    这样会有一个问题,A 程序里 content 的图片的格式是 img src=http://www.v2ex.com/upload/xxx/xxx.jpg

    需要写个方法下载 content 里的图片(需要提取 img,然后在 /upload 前加上域名)、改变 src 的值(将下载的图片的路径写到 content 对应的 img)替换

    目前的思路是

    正则匹配出 content 里的所有 img,然后下,得到路径,替换原 content 对应的 img src

    想的通, 写不出来, 尴尬了


    例:
    $str =
    "<p>V 站的程序员都好牛 b</p>,<img src=\"/uploads/allimg/170427/10330HO4-0.jpg\"> 巴拉巴拉 <img src=\"/uploads/allimg/170427/10330HO5-1.png\"> <div>你们最帅了</div>";

    要得到的结果,
    下载$str 里的图片,得到路径,重写 src
    11 条回复    2018-06-04 00:01:56 +08:00
    zjsxwc
        1
    zjsxwc  
       2018-06-02 18:00:33 +08:00 via Android
    html parser 了解下
    ainpy
        2
    ainpy  
    OP
       2018-06-02 18:04:04 +08:00
    我不是要写爬虫啊, 我是在 php 链接远程数据库,拿到数据后需要提取字符串里的图片,然后下载图片到本地,得到路径后,替换字符串里对应图片的地址,然后入库。
    DavidNineRoc
        3
    DavidNineRoc  
       2018-06-02 18:12:09 +08:00
    一楼说的对
    DavidNineRoc
        4
    DavidNineRoc  
       2018-06-02 18:12:19 +08:00
    掘金的效果?
    update
        5
    update  
       2018-06-02 18:19:04 +08:00
    付费解决吧
    laobaozi
        6
    laobaozi  
       2018-06-02 18:31:54 +08:00 via Android
    做过整个数据库迁移的 只能一条一条处理
    laobaozi
        7
    laobaozi  
       2018-06-02 18:34:28 +08:00 via Android
    首先正则匹配 content 所有的 src 安按顺序下载图片并上传 再依次替换
    laobaozi
        8
    laobaozi  
       2018-06-02 18:37:12 +08:00 via Android
    或者 旧站点的所有图片按原来的层级全部下载到复制到新站点的某个目录 这样只需要只修改 content
    demonchang
        9
    demonchang  
       2018-06-02 19:12:11 +08:00 via iPhone
    whyiyhw
        10
    whyiyhw  
       2018-06-02 20:25:56 +08:00 via Android
    手册正则替换里面 preg_match_all 的第一个例子,你可以看下,我之前为了拿富文本编辑器内容里面的文字和图片,也被正则卡了半天。
    Junjunya
        11
    Junjunya  
       2018-06-04 00:01:56 +08:00
    ……看了半天,难道不是一个简单的 正则匹配 img 的 src 然后替换的操作么?

    <?php

    $str =
    "<p>V 站的程序员都好牛 b</p>,<img src=\"/uploads/allimg/170427/10330HO4-0.jpg\"> 巴拉巴拉 <img src=\"/uploads/allimg/170427/10330HO5-1.png\"> <div>你们最帅了</div>";
    $b= preg_replace("/<img src=\"(.*?)\"(.*?)\>/i", '<img src="' . 'http://baidu.com' . '$1" $2 />', $str);
    echo $b;

    是这个样子么
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5450 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 06:04 PVG 14:04 LAX 23:04 JFK 02:04
    Do have faith in what you're doing.
    ubao msn 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