我在TinyMCE中管理内容。我有一个名为code的类,我需要在PHP中替换换行符,但只需要在两个标记之间。
所以我的html看起来像这样
<p>hello see my css below</p>
<p class="code">
h1 {
font-size:10px
font-color:#FFF
}
h2 {
font-size:10px
font-color:#FFF
}
</p>
&#13;
在CSS中,我有一个<code></code>
标记,可以自动为每行添加行号。因此,我想将上述内容替换为以下内容:
<p>hello see my css below</p>
<p class="code">
<code>h1 {</code>
<code>font-size:10px</code>
<code>font-color:#FFF</code>
<code>}</code>
<code></code>
<code>h2 { </code>
<code>font-size:10px</code>
<code>font-color:#FFF</code>
<code>}</code>
<code></code>
</p>
我认为我想用</code>
str_replace或preg_replace每个换行符
<code>
。但是,我无法解决如何仅在<p class="code">
和</p>
一如既往,感谢您的帮助。
答案 0 :(得分:0)
我为你的问题汇总了一个快速而肮脏的解决方案。它不包含.code
段中的其他属性(您很可能需要将第一个explode
更改为preg_split
并使用一些正则表达式来实现这一点。
它可能不是最佳方式来解决您的问题,但它似乎适用于您声明的要求。
function codify($string){
$final = '';
$array = explode('<p class="code">',$string);
if(count($array)){
foreach($array as $k=>$str){
if($k == 0){
$final .= $str;
}
else{
$tmp = explode("</p>",$str);
$tmp2 = explode("\n",$tmp[0]);
$final .= "<p class=\"code\">\n<code>".implode("</code>\n<code>",$tmp2)."</code>\n</p>".implode("</p>",array_slice($tmp,1));
}
}
}
else{
$final = $string;
}
return $final;
}