这是图片前面的文字<img>http://....com</img>这是图片后面的文字,这是图片前面的文字<img>http://....com</img>这是图片后面的文字我想达到的效果是:文字用文本显示,图片开始用一张默认的代替然后请求图片链接,请求成功后替换默认的。但是要按照顺序显示文字、图片,应该怎么做到呢??求指点,谢谢!
这是图片前面的文字<img>http://....com</img>这是图片后面的文字,这是图片前面的文字<img>http://....com</img>这是图片后面的文字我想达到的效果是:文字用文本显示,图片开始用一张默认的代替然后请求图片链接,请求成功后替换默认的。但是要按照顺序显示文字、图片,应该怎么做到呢??求指点,谢谢!
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
</style>
</head>
<body>
<script>
var str = '这是图片前面的文字<img>http://www.baidu.com/img/baidu_jgylogo3.gif</img>这是图片后面的文字,这是图片前面的文字<img>http://www.baidu.com/img/baidu_jgylogo3.gif</img>这是图片后面的文字';
var r1 = /[^,]+/g;
var r2 = /<img>(.+?)<\/img>/;
var arr = str.match(r1);
for( var i = 0, len = arr.length; i < len; i++ ){
var tmp = arr[i].replace(r2, '<img src="$1">');
var div = document.createElement('div');
div.innerHTML = tmp;
document.body.appendChild(div);
}
</script>
</body>
</html>
<img id=xxx name=xxx src=默认图片 onclick=xxx>yyyy</img>
在onclick事件里修改src为新的图片就可以了其他的按你现在处理保持不变
<img onload="loadImg(this, 'http://..../xxoo.jpg')" src="/img/default.jpg" />
然后写个loadImg的函数去负责异步下载图片好了。至于用正则匹配出<img>xxoo</img>,这个难度貌似就更低了。
html = html.replaceAll("<img>([^<]+)</img>", "<img onload="loadImg(this, '$1')" src="/img/default.jpg" />");
至于5楼的需求,复杂度就比较高了
这是图片前面的文字<img>http://....com</img>这是图片后面的文字
“这是图片前面的文字”,“这是图片后面的文字”有什么分界符吗?还是说就是固定是这样的字符串了?
如果是固定的字符串
String s = "这是图片前面的文字<img>http://....com</img>这是图片后面的文字,这是图片前面的文字<img>http://....com</img>这是图片后面的文字";
Matcher m = Pattern.compile("(?i)(.*?)<img>(.*?)</img>(.*?)([,]|$)").matcher(s);
while (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
没有分节符的,文字无限制,随便多少。只是图片会用<img></img>包起来,文字是没有包含起来的。
因为目前我在做论坛的帖子这块需要这样的要求
String pat = "\\[img\\]([^\\[]*)\\[/img\\]";
Matcher m = Pattern.compile(pat).matcher(s);
while (m.find()) {
System.out.println(m.group(1));
}
s = s.replaceAll("\\[img\\](.*?)\\[/img\\]", "$1");
System.out.println(s);