替换 HTML 标签中的图像 src?使用Regex从html字符串中提取所有图像

文章讲述了如何在PHP中使用preg_replace_callback函数结合正则表达式,从数据库查询结果的HTML内容中提取并替换图片URL,将gfx/image.png类型的路径转换为http://x.y/a/1.png格式。

如果该页面包含两个文件,一个名为 1.png,一个名为 2.png,脚本应该解析数字并将它们替换为不同的 url,例如 http://vcncn.cn/a/1.png 和 <代码>http://vcncn.cn/a/2.png。

我听说 preg_replace_callback 是执行此操作的最佳方法,但我不知道如何让它工作

$result = $s->db_query("SELECT reviewFullText as f FROM reviews WHERE reviewsID = 155");
while($row = mysql_fetch_array($result))
{
    $body = stripslashes(html_entity_decode($row['f'], ENT_NOQUOTES, "UTF-8"));
    preg_match_all('/<img.*?(src=['|"]{0,1}.*?['|"]{0,1})[s|>]{1}/i', $body, $matches);
    for($i=0;$i<count($matches[0]);$i++)
    {
        $number = preg_replace("/[^0-9]/", '', $matches[0][$i]);
        echo preg_replace('/<img.*?(src=['|"]{0,1}.*?['|"]{0,1})[s|>]{1}/i', '<img src="http://x.y/a/' . $number . '.png"', $matches[0][$i]);
    }
}

-------------------------------------

我需要从字符串中提取'gfx/image.png,它看起来像

<table cellpadding="0" cellspacing="0"  border="0" style="height:350px; margin:0; background: url('gfx/image.jpg') no-repeat;">
<table cellpadding="0" cellspacing="0" border="0" background="gfx/image.jpg" style=" width:700px; height:250px; "><tr><td valign="middle">

您可以使用以下正则表达式:(['"])([^'"]+\.jpg)\1然后获取组[2],这段代码运行良好:

var str = @"<table cellpadding=""0"" cellspacing=""0"" border=""0"" style=""height:350px; margin:0; background: url('gfx/image.jpg') no-repeat;""> <table cellpadding=""0"" cellspacing=""0"" border=""0"" background=""gfx/image.jpg"" style="" width:700px; height:250px; ""><tr><td valign=""middle"">"; var regex = new Regex(@"(['""])([^'""]+\.jpg)\1"); var match = regex.Match(str); while (match.Success) { Console.WriteLine(match.Groups[2].Value); match = match.NextMatch(); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值