Php 将嵌套html转换为bbCode标记
我正在尝试转换以下htmlPhp 将嵌套html转换为bbCode标记,php,html,bbcode,Php,Html,Bbcode,我正在尝试转换以下html <div id="collapseOne" class="accordion-body collapse"> <div class="accordion-inner"> My Header1 </div></div> <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" da
<div id="collapseOne" class="accordion-body collapse">
<div class="accordion-inner">
My Header1
</div></div>
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
My content1
</a></div>
我的校长
下面的代码是这样的
[标题]我的标题1[标题/]
[内容]我的内容1[内容/]
[标题]我的标题2[标题/]
[内容]我的内容2[内容/]
我该怎么做?
我正在写这门课,但不工作
class BBCode
{
private $Tags = array(
'content','header');
/**
* Replaces all the BBCodes to HTML Codes
* param string $text: the text with BBCodes
*/
function ReplaceTag($Text)
{
$Replace_code['content'] = "<div id=\"collapseOne\" class=\"accordion-body collapse in\"><div class=\"accordion-inner\">$1</div></div>" ;
$Replace_code['header'] = "<div class=\"accordion-heading\"><a class=\"accordion-toggle\" data-toggle=\"collapse\" data-parent=\"#accordion2\" href=\"#collapseOne\">$1</a></div>" ;
// Deleting spaces from begging and end of string
$Done = trim($Text);
// Deleting all html code
$Done = htmlspecialchars($Done);
if(in_array("content",$this->Tags))
$Done = preg_replace("/\[content\](.*?)\[\/content\]/is", $Replace_code['content'], $Done);
if(in_array("header",$this->Tags))
$Done = preg_replace("(\[header\](.*?)\[\/header\])is", $Replace_code['header'], $Done);
$Done = nl2br($Done);
enter code here
return $Done;
}
}
BBCode类
{
private$Tags=array(
“内容”、“标题”);
/**
*将所有BBCODE替换为HTML代码
*参数字符串$text:带BBCODE的文本
*/
函数ReplaceTag($Text)
{
$Replace_code['content']=“$1”;
$Replace_code['header']=“”;
//从begging和字符串结尾删除空格
$Done=修剪($Text);
//删除所有html代码
$Done=htmlspecialchars($Done);
if(在_数组(“内容”,$this->Tags)中)
$Done=preg\u replace(“/\[content\](.*?\[\/content\]/is“,$replace\u code['content'],$Done”);
if(在_数组(“header”,$this->Tags)中)
$Done=preg\u replace((\[header\](.*?\[\/header\])是“,$replace\u code['header'],$Done);
$Done=nl2br$Done;
在这里输入代码
返回$Done;
}
}
问题在于,collapseOne对于要更改的每对标签功能Acco_标签($Text)
function Acco_Tag($Text)
{
$Text = preg_replace_callback('#\[header\](.*?)\[/header\]#muis','iNext4header', $Text);
return preg_replace_callback('#\[content\](.*?)\[/content\]#muis', 'iNext4content', $Text);
}
private function iNext4header($match)
{
static $i=0;
return '<div class="accordion-heading"><a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapse'.(++$i).'">'.$match[1].'</a></div>';
}
private function iNext4content($match)
{
static $i=0;
return '<div id="collapse'.(++$i).'" class="accordion-body collapse in"><div class="accordion-inner">'.$match[1].'</div></div>';
}
{
$Text=preg\u replace\u回调(“\[header\]”(.*?\[/header\]\muis“,“inxt4header”,$Text);
返回preg\u replace\u回调('\[content\](.*?\[/content\]\muis','inxt4content',$Text);
}
私有函数头($match)
{
静态$i=0;
返回“”;
}
私有函数内容($match)
{
静态$i=0;
返回“”。$match[1]”;
}
谢谢
我找到了答案