在第一个iframe标记后附加字符串

时间:2014-06-13 18:13:46

标签: regex dom

我有多个iframe标签,前面和后面都有字符串。我只想在第一个iframe标签后添加一个字符串。

输入:

aaaaa
<iframe src="anything"></iframe>
bbbb
<iframe src="anything"></iframe>
cccc
<iframe src="anything"></iframe>

输出:

aaaaa
<iframe src="anything"></iframe>
**String Added**
bbbb
<iframe src="anything"></iframe>
cccc
<iframe src="anything"></iframe>

感谢

3 个答案:

答案 0 :(得分:0)

您没有发布语言,因此我会在Javascript中为您提供答案,您可以根据自己选择的语言进行调整。

正则表达式:
(.*?<\/iframe>)(.*)
修改:
dot matches all

使用Javascript:
str = str.replace(/(.*?<\/iframe>)(.*)/m, '$1' + "** String Added **" + '$2');

在这里测试:http://jsfiddle.net/9LE2S/

var str = 'aaaaa\
<iframe src="anything"></iframe>\
bbbb\
<iframe src="anything"></iframe>\
cccc\
<iframe src="anything"></iframe>';

str = str.replace(/(.*?<\/iframe>)(.*)/m, '$1' + "** String Added **" + '$2');

alert(str);

请注意,javascript并不是最好的,因为它处理多行字符串的方式,但如果你从dom直接得到元素,你可能不会遇到这个问题。这个正则表达式应该在任何风格中都有效。一定要检查修改器的用途是什么&#39; dot匹配换行符&#39; - 在这种情况下,它是m,正如你在正则表达式尾随斜杠后看到的那样。

说明:

( - 捕获
.* - 一切都达到了 ? - 第一个 <\/iframe> - <i/frame>的实例 ) - 结束捕获 ( - 捕获
.* - 其他一切
) - 结束捕获

然后返回您的捕获组并在它们之间放置一些东西。

答案 1 :(得分:0)

<{1>}或var dom中的

$dom

使用javascript替换函数:

aaaaa
<iframe src="anything"></iframe>
bbbb
<iframe src="anything"></iframe>
cccc
<iframe src="anything"></iframe>

使用php:

var input = '\nString Added\n';    
dom.replace(/<\/iframe>[^\w](\w+)/ ,input + '$1');

<强>输出:

$input = '\nString Added\n';    
preg_replace(/<\/iframe>[^\w](\w+)/ ,$input . '$1',$dom);

它的作用:

  • aaaaa <iframe src="anything"></iframe> String Added bbbb <iframe src="anything"></iframe> cccc <iframe src="anything"></iframe> =搜索第一个结束帧标记。
  • <\/iframe> =向前搜索,直到找到单词字符。
  • [^\w] =捕获整个单词并将其存储在$ 1中。

答案 2 :(得分:0)

这是一个简单的JQuery解决方案:

$('iframe').first().after('\n**String Added**\n');