当前位置:首页 » 编程语言 » php正则图片替换图片

php正则图片替换图片

发布时间: 2025-07-13 06:12:43

❶ 请问怎样用php 正则表达式取设置宽和高的[img][/img]标签里面的图片地址

用php给你运行了一个

$txt='[img=442,296]图片地址1[/img]
[img=300,188]图片地址2[/img]
[img=120,206]图片地址3[/img]';
$re='/[img=(d+,d+)](S+?)[/img]/';//这里修改下,加上一个?防止以单行文本导致的定界符不准问题
$arr=[];
preg_match_all($re,$txt,$arr);
var_mp($arr);

运行结果如下

phptest.php
array(3){
[0]=>
array(3){
[0]=>
string(32)"[img=442,296]图片地址1[/img]"
[1]=>
string(32)"[img=300,188]图片地址2[/img]"
[2]=>
string(32)"[img=120,206]图片地址3[/img]"
}
[1]=>
array(3){
[0]=>
string(7)"442,296"
[1]=>
string(7)"300,188"
[2]=>
string(7)"120,206"
}
[2]=>
array(3){
[0]=>
string(13)"图片地址1"
[1]=>
string(13)"图片地址2"
[2]=>
string(13)"图片地址3"
}
}

//增加一个矩阵转换
$txt='[img=442,296]图片地址1[/img][img=300,188]图片地址2[/img][img=120,206]图片地址3[/img][img=120,206]wwww[/img]';
$re='/[img=(d+,d+)](S+?)[/img]/';

var_mp(preg_match_all_to_array($re,$txt));

functionpreg_match_all_to_array($re,$txt)
{
$arrs=[];
preg_match_all($re,$txt,$arrs);
if($arrs===false)
return$arrs;
//移除到总匹配数据
array_shift($arrs);
$return=[];
//获取矩阵纵长
$arrs_longitudinal=count($arrs);
for($i=0;$i<$arrs_longitudinal;$i++){
//获取单列横长
$arrs_transverse=count($arrs[$i]);
for($j=0;$j<$arrs_transverse;$j++){
$return[$j][$i]=$arrs[$i][$j];
unset($arrs[$i][$j]);
}
unset($arrs[$i]);
}
return$return;
}

❷ 这里的这些小符号怎么打出来 php 怎么去除 或者 替换掉 这些特殊字符

该图中的符号有两种情况,一种就是小图片,一种就是emoji表情图片。处理方法就是替换。示例如下:
一.替换文本中的图片为空:

$str="<li><img src="a.gif" />母亲节</li>";
$strs= preg_replace('/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i', "", $str);
echo $str;

二.处理文本中的emoji为空:
$str = "<li>😀 母亲节 💗</li>";

$str = preg_replace_callback("/./u", function ($match) { return strlen($match[0]) >= 4 ? '' : $match[0]; }, $str);
echo $str;

❸ php 正则查找 图片的src 并替换相应的src

/TestDemo/Tpl/default/Public/Files/2010_09_04/1283591048.jpg转
/TestDemo/Tpl/default/File/Uploads/2010_9_6/1283591048.jpg
根据你题目里面举例的这种对比的需求,转换条件认为是
“/Public/Files/全日期/数字.jpg”形式的图片转换成
“/File/Uploads/紧缩日期/数字.jpg”形式的图片。如果实际你的需求有所不同,可以根据这个略微对正则做修改。代码替换部分如下:

$str1 = "<p><img height=\"32\" alt=\"\" src=\"/TestDemo/Tpl/default/Public/Files/2010_09_04/1283591048.jpg\" width=\"32\" border=\"0\" />来留言看看这的风景好吗 <img alt=\"\" src=\"/TestDemo/Public/kindeditor/plugins/emoticons/13.gif\" border=\"0\" /></p><img height=\"32\" alt=\"\" src=\"/TestDemo/Tpl/default/Public/Files/2010_12_01/88668866.jpg\" width=\"32\" border=\"0\" />";
//这里多举一个图片例子试试
$str2 = preg_replace("/(src=\"[^\"]*?)\/Public\/Files(\/\d{4}_)[0]?(\d{1,2}_)[0]?(\d{1,2}\/\d+[.](?:jpg|gif|bmp)\")/","$1/File/Uploads$2$3$4$5",$str1);
?>
//规则有不同的话你可以这里对比修改下正则参数。good luck~

//----------------------------------------
既然需求少了那么多,就可以
$str2 = preg_replace("/(src=\"[^\"]*?)\/Public\/Files(\/\d{4}_\d{1,2}_\d{1,2}\/\d+[.](?:jpg|gif|bmp)\")/","$1/File/Uploads$2",$str1);
行了,如果对图片的格式限制不严格(严格点的就需要在尾巴那里罗列出来),可以再简化成
$str2 = preg_replace("/(src=\"[^\"]*?)\/Public\/Files(\/\d{4}_\d{1,2}_\d{1,2}\/\d+[.][a-zA-Z]+\")/","$1/File/Uploads$2",$str1);

❹ PHP正则表达式如何替换像这样的案例的

这个用正则表达式替换是比较简单的,因为有分隔符/,所以把分隔符后面的都替换掉就行了.

<?php

$str="龙门飞甲/龙门飞甲电视剧版";

$regex="~/.*?$~";

echo preg_replace($regex,"",$str);

?>

❺ php 用正则匹配最外层div下面的所有内容。如图所示匹配<div class="zz">下面的所有内容。谢谢了

按照你图片里的代码,帮你做了一个示例,如下:

PHP代码:

$str=file_get_contents('./ceshi.html');

preg_match('/<body>s+<divclass="zz">(.*)</div>s+</body>/s',$str,$result);

echo$result[1];

运行结果:

正则中的s+是为了匹配body与div中的换行以及缩进符。如果在匹配前已经将换行以及缩进符都替换掉了可以不加s+。

如果不明,可继续追问。

热点内容
华为平板迅雷存储位置 发布:2025-07-13 11:54:44 浏览:712
javaweb经典 发布:2025-07-13 11:50:25 浏览:416
屏幕切换器怎么配置 发布:2025-07-13 11:49:43 浏览:245
我与预算法 发布:2025-07-13 11:20:28 浏览:426
线谱算法 发布:2025-07-13 11:17:15 浏览:838
怎么把文件上传百度云 发布:2025-07-13 11:09:18 浏览:556
光遇安卓玩家如何加苹果玩家 发布:2025-07-13 11:08:21 浏览:477
安卓哪里下载破解游戏 发布:2025-07-13 11:02:30 浏览:324
三菱如何查找未编译的程序 发布:2025-07-13 11:02:29 浏览:389
2013全国计算机二级c语言真题 发布:2025-07-13 10:58:17 浏览:174