如何使用javascript将p标签替换为br

时间:2011-06-16 14:33:53

标签: javascript replace preg-replace

我该如何替换它:

<p class='abc'>blah blah</p> afdads

有了这个:

blah blah <br/>

使用(vanilla?)JavaScript?

谢谢!

更新内容

$content = $_REQUEST['content'];
$content = preg_replace('/<p[^>]*>/', '', $content); // Remove the start <p> or <p attr="">
$content = preg_replace('/</p>/', '<br />', $content); // Replace the end
echo $content; // Output content without P tags

我会喜欢这样的...希望这次你的伙伴们有我的问题。

谢谢你

5 个答案:

答案 0 :(得分:5)

感谢您发布此问题,您是救星,GitsD。

我将你的php函数替换为javascript并且它有效!

content = content.replace(/<p[^>]*>/g, '').replace(/<\/p>/g, '<br />');

内容现在用''和/ p标签用br

替换p标签

答案 1 :(得分:3)

你可以做(​​如果你谈论字符串)

var str = "<p class='abc'>blah blah</p> afdads";

str = str.replace("<p class='abc'>", "");
str = str.replace("</p> afdads", " <br/>");
//str = "blah blah <br/>"

答案 2 :(得分:3)

我担心你的问题没有明确说明。假设您希望对该类的所有p标记执行此操作,并且您正在Web浏览器环境中工作:

var paras = document.getElementsByTagName('p')
for (var i = 0; i < paras.length; ) {
  if (paras[i].className.match(/\babc\b/)) {
    var h = paras[i].innerHTML
      , b = document.createElement('br')
      , t = document.createTextNode(h)
      , p = paras[i].parentNode
    p.replaceChild(b, paras[i])
    p.insertBefore(t, b)
  }
  else {
    i++
  }
}

答案 3 :(得分:1)

如果您实际上是指 JavaScript 而不是PHP,那么就可以这样做:

var ps = document.getElementsByTagName('p');
while (ps.length) {
    var p = ps[0];
    while (p.firstChild) {
        p.parentNode.insertBefore(p.firstChild, p);
    }
    p.parentNode.insertBefore(document.createElement('br'), p);
    p.parentNode.removeChild(p);
}

这是有效的,因为NodeList返回的getElementsByTagName是“实时”,这意味着当我们从文档中删除p节点时,它也会从列表中删除。

答案 4 :(得分:-1)

使用jQuery很容易

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <title>Test</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>
    <script type="text/javascript">
        function replaceAll() {
            $('p').replaceWith(function () {
                return $(this).html() + '<br/>';
            });
        }
    </script>
</head>
<body style="width: 943px">
    <input type="button" onclick="replaceAll();" value="Replace" />

    <p class='abc'>blah blah</p> afdads

    <p class='abc'>grah grah</p> ertyu

    <p class='abc'>bubu bubu</p> xcvbn
</body>
</html>