在每个圆括号之前添加带有新id的span标记

时间:2018-04-21 22:36:22

标签: javascript php html tags prepend

我有一些类似于诗歌参考的文字,我需要在每个圆括号之前自动添加一个span标签(当访问页面时)带有新的id。

输入:

<p>some text (Jn 1:2), more text sentences (Gn 5-12, 23 ref) and more etc.</p>

输出:

<p>some text <span id="1">(Jn 1:2)</span>, more text sdfkljgdf <span id="2">(Gn 5-12, 23)</span> and more etc.</p>

因此,它会在每个圆括号( )周围添加span标记,即使它们不在同一行中(如果结束)在另一行代码中)。

我尝试了类似下面的内容..我对使用php或Javascript工作的任何东西都是开放的。

var myString_before = str.split("(")[count];
//alert (myString_before);

//get all text before )
var myString_after = myString_before.split(")")[0];
alert(" ref: " + myString_after);

if (x != true) {
    $('span').each(function (k) {
        var replace_str = $(this).html().replace(/\(/g, '<div 
        style="display: inline" id= "' + pos + '">(</div>');
        $(this).html(replace_str);
    })
}
x = document.getElementsByTagName('div')[count].hasAttribute("style");

1 个答案:

答案 0 :(得分:0)

您可以混合使用jQuery&#39; .html()String.replace

&#13;
&#13;
let i = 0;
$('p').html((_, oldHtml) => 
  oldHtml.replace(/\([^)]+\)/g, match => `<span id="${++i}">${match}</span>`)
);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>some text (Jn 1:2), more text sentences (Gn 5-12, 23 ref) and more etc.</p>
&#13;
&#13;
&#13;

(正则表达式简单地匹配括号之间的任何内容,包括它们。)