求一段程序.

liufeng_ok 2003-08-22 04:14:11
转换html代码中的img标签,如:
$html="<img src='c:\a.gif' width=30 height= 20>";
转换为:
$html= "[uploadpic|30|20|a.gif]"
谢谢
...全文
32 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vitalgg 2003-08-22
  • 打赏
  • 举报
回复
//在没有其他属性的情况下使用.(可乱序),只取文件名
echo preg_replace('/<img\s*(?:src=\'.*\x5C([^\x5C]*)\'\s*|width=(.*)\s*|height=(.*)\s*)*\s*>/Ui',"[uploadpic|\\2|\\3|\\1]",$html);
vitalgg 2003-08-22
  • 打赏
  • 举报
回复
echo preg_replace('/<img\s*(?:src=\'.*\x5C(.*)\'\s*|width=(.*)\s*|height=(.*)\s*)*\s*>/Ui',"[uploadpic|\\2|\\3|\\1]",$html);
//在没有其他属性的情况下使用.(可乱序)
liufeng_ok 2003-08-22
  • 打赏
  • 举报
回复
最后一个参数只要文件名
xuzuning 2003-08-22
  • 打赏
  • 举报
回复
考虑到标签内的各个属性次序可能有变,所以简单的替换是不行的
<?php
$html="
<font color=red>ok</font>
<img src='c:\a.gif' width=30 height= 20><img src='c:\a.gif' width=30 height= 20>";
if(preg_match_all("/<img [^>]+>/",$html,$regs)) {
$p = $regs[0];
foreach($p as $key=>$value) {
$p[$key] = "/".quotemeta($value)."/";
$value = preg_replace("/ +/"," ",$value); // 除去多余的空格
$value = preg_replace("/ ?= ?/","=",$value); // 除去多余的空格
preg_match_all("/\b(\w+)=([^ >]+)/",$value,$r); // 提取赋值表达式
$ar = array("uploadpic",width=>"",height=>""); // 定义输出缓存

foreach($r[1] as $k=>$v) { // 给缓存赋值
$ar[$v] = preg_replace("/'/","",$r[2][$k]);
}
$out[] = "[".join("|",$ar)."]"; // 生成输出串
}
$html = preg_replace($p,$out,$html);
}
echo $html;
?>

liufeng_ok 2003-08-22
  • 打赏
  • 举报
回复
[uploadpic|30|20|a.gif]
只要文件名
liufeng_ok 2003-08-22
  • 打赏
  • 举报
回复
里面可能还含有别的标签如:
$html="
<font color=red>ok</font>
<img src='c:\a.gif' width=30 height= 20><img src='c:\a.gif' width=30 height= 20>";
转换为:
$html= "<font color=red>ok</font>uploadpic|30|20|a.gif][uploadpic|30|20|a.gif]"
liufeng_ok 2003-08-22
  • 打赏
  • 举报
回复
我的意思是替换.

$html="
<img src='c:\a.gif' width=30 height= 20><img src='c:\a.gif' width=30 height= 20>";
转换为:
$html= "[uploadpic|30|20|a.gif][uploadpic|30|20|a.gif]"
hodat 2003-08-22
  • 打赏
  • 举报
回复
钢材看漏了~~

<?
$string = "<img src='c:\a.gif' width=30 height= 20>";

if(@ereg("^<img.+src=\'(.+)\' width=(.+) height=(.+)>$",$string,$m)){
$te=explode("\\",trim($m[1]));
echo "[uploadpic|".trim($m[2])."|".trim($m[3])."|".trim($te[1])."]";
}
else{
echo "can't";
}

?>
hodat 2003-08-22
  • 打赏
  • 举报
回复
<?
$string = "<img src='c:\a.gif' width=30 height= 20>";

if(@ereg("^<img.+src=\'(.+)\' width=(.+) height=(.+)>$",$string,$m)){
echo "[uploadpic|".trim($m[2])."|".trim($m[3])."|".trim($m[1])."]";
}
else{
echo "can't";
}

?>

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧