2011-06-16 11660 views
-1

我如何将取代这BR:如何更换p标签使用JavaScript

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

有了这个:

blah blah <br/> 

使用(香草?)的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 

我想这样的事情......希望这个时候你的队友已经得到了我的问题。

三江源

+0

/p标签p标签你会接受的jQuery的解决方案吗? – Blender 2011-06-16 14:35:49

+3

@Blender他会接受一个答案吗? ;-) – DanielB 2011-06-16 14:37:35

+0

@DanielB,我明白你在那里做了什么。 – Blender 2011-06-16 14:38:38

回答

2

你可以这样做(如果你谈论的字符串)

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/>" 
-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> 
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); 
} 

这是可行的,因为getElementsByTagName返回的NodeList是'live',这意味着当我们从文档中删除p节点时,它也会从列表中删除。

2

恐怕你的问题没有明确说明。假设你想要做的是与该类别的所有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++ 
    } 
} 
2

谢谢你张贴了这个问题,你的救星,GitsD。

我换成你的PHP函数javascript和它的工作!

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

内容现在要换成',并与BR