PDA

View Full Version : حرفه ای: تبدیل کد html به صورت یک تگ (استفاده در ادیتور)



majid1605
جمعه 08 شهریور 1392, 13:51 عصر
<div class="menu">
<div class="accordion">

<div class="accordion-group">


<div class="accordion-heading area">
<a class="accordion-toggle" data-toggle="collapse" href="#area1">
تست
</a>

</div>
<div id="area1" class="accordion-body collapse">
<div class="accordion-inner">
<div class="accordion" id="equipamento1">
این متن برای تست می باشد.

</div>
</div>
</div>
</div>
</div>
</div>

سلام
کد زیر یه منوی accordion که می خوام برای مطالب سایت استفاده کنم یه چیزی شبیه زیر
109930
می خوام به صورت یه دکمه تووی ادیتور ازش استفاده کنم یه چیزی مثل تگ هایی که تووی همین سایت هستند(php ,xml,java)
مثلا واسه لینک (تست) یه تگ جدا ([/menu][menu]) و برای محتوا یه تگ جدا دیگه
به جنبه آموزشیش هم توجه داشته باشید ممنون میشم

parsboy
جمعه 08 شهریور 1392, 14:07 عصر
<div class="menu">
<div class="accordion">

<div class="accordion-group">


<div class="accordion-heading area">
<a class="accordion-toggle" data-toggle="collapse" href="#area1">
تست
</a>

</div>
<div id="area1" class="accordion-body collapse">
<div class="accordion-inner">
<div class="accordion" id="equipamento1">
این متن برای تست می باشد.

</div>
</div>
</div>
</div>
</div>
</div>

سلام
کد زیر یه منوی accordion که می خوام برای مطالب سایت استفاده کنم یه چیزی شبیه زیر
109930
می خوام به صورت یه دکمه تووی ادیتور ازش استفاده کنم یه چیزی مثل تگ هایی که تووی همین سایت هستند(php ,xml,java)
مثلا واسه لینک (تست) یه تگ جدا ([/menu][menu]) و برای محتوا یه تگ جدا دیگه
به جنبه آموزشیش هم توجه داشته باشید ممنون میشم
باسلام
دوست عزیز این انجمن از چیزی به اسم BB Code استفاده میکنه.
http://www.sitepoint.com/forums/misc.php?do=bbcode
https://www.phpbb.com/community/faq.php?mode=bbcode
موفق باشید.

majid1605
جمعه 08 شهریور 1392, 15:29 عصر
مشکل من تبدیل این کدها به یه چیزی شبیه همون bbcode

majid1605
شنبه 09 شهریور 1392, 11:48 صبح
فکر کنم بشه یه همچین کدی .دقیقا نمیدونم




<?php
function Content_Tag($bbcode)
{
$regex = "(\(.*?)\[/content\])ism";
$replace = "<div id=\"collapseOne\" class=\"accordion-body collapse\"><div class=\"accordion-inner\">$1</div></div>" ;
$bbcode = preg_replace($regex, $replace, $bbcode);
return $bbcode;
}

function Header_Tag($bbcode)
{
$regex = "(\(.*?)\[/header\])ism";
$replace = "<div class=\"accordion-heading\"><a class=\"accordion-toggle\" data-toggle=\"collapse\" data-parent=\"#accordion2\" href=\"#collapseOne\">$1</a></div>" ;
$bbcode = preg_replace($regex, $replace, $bbcode);
return $bbcode;
}
?>


ممنون میشم دوستان دیگه کمک کنن .
ولی مشکلی که دارم طرز استفاده همزمانشه یعنی اینکه فرض کنید من یه متن اینجوری داشته باشم




[header] تست1 [content] متن تست 1 2ست1 متن تست2


محتوا کلا یک رشته است که از دیتابیس فراخوانی میشه ولی برای جایگزینی باید بریزم داخل یک تابع ولی من دوتا تابع جدا نوشتم

AliRezaPro
شنبه 09 شهریور 1392, 14:23 عصر
یعنی دنبال همچین چیزی هستید ؟

http://php.net/manual/en/function.bbcode-create.php
ببینید :

http://www.devnetwork.net/viewtopic.php?f=50&t=122988

majid1605
شنبه 09 شهریور 1392, 14:59 عصر
آره کدی که بالا خودم گذاشتم تست می کنم تا حدودی کار می کنه اما چندتا ایراد داره که بالا به یکیشون اشاره کردم
1-من وقتی متنی رو از دیتابیس می خونم مثلا متن زیر


تست1 متن تست 1 2ست1 متن تست2

من یدونه متن بیشتر ندارم و توی این متن ممکنه چندتا از این دوتا تگ که تعریف کرد وجود داشته باشه
ولی کد من دوتا تابع است و نمیشه این متن رو به هر دو بدم و دوبار نمایشش بدم .باید این دوتا تابع رو یکی کنم که نمی دونم این کار چطور باید انجام بشه .

2- دومین مشکل این id
collapseOne که کد رو نگاه کنید اونو می بینید درواقع لینک منو محسوب میشه
این id برای تگ اول هرچی باشه یعنی اگه
collapseOne باشه برای دومین تگ باید تغییر کنه مثلا بشه
collapseTwo
برای سومین و........
البته عدد هم می تونه به جاش قرار بگیره مثلا collapse1 و collapse2 و..... یعنی هرچی باشه با بقیه فرق داشته باشه.

این دوتا مشکل حل بشه همه چیز به خوبی کار می کنه

majid1605
یک شنبه 10 شهریور 1392, 10:19 صبح
دوستان منتظر راهنمایی های شما هستیم

majid1605
دوشنبه 11 شهریور 1392, 14:31 عصر
:ناراحت::ناراحت:

majid1605
پنج شنبه 14 شهریور 1392, 22:12 عصر
<?php
class BBCode
{

private $tags = array(
'content','header');

/**
* Replaces all the BBCodes to HTML Codes
* @param string $text: the text with BBCodes
*/
function replace($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\">$2</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);

return $done;
}

}

نمیدونم چرا الان اصلا کار جایگزینی رو انجام نمیده