|
|
|
ถามเรื่อง syntaxhighlighter ครับ คริปที่เป็น html กลายเป็น <br>หมดเลย ต้องแก้ยังไง |
|
|
|
|
|
|
|
ลอง replace ให้เป็น HTML Tag น่ะครับ
|
|
|
|
|
Date :
2010-12-08 11:50:22 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รบกวนช่วยยกตัวอย่างหน่อยครับ
แบบนี้หรือเปล่า
str_replace(">",">",$string");
ขอบคุณครับ
|
ประวัติการแก้ไข 2010-12-08 11:57:22
|
|
|
|
Date :
2010-12-08 11:56:03 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมใช้่ script แบบนี้ แล้วผมจะแก้ยังไงครับ
แล้วผมจะแทรก function ยังไงครับ
Code (PHP)
<?
function view($text){
$text_a=array('/\[php\](.*?)\[\/php]/is',
'/\[js\](.*?)\[\/js]/is',
'/\[html\](.*?)\[\/html]/is',
);
$text_b=array( '<pre class="brush: php;">$1</pre>',
'<pre class="brush: js;" >$1</pre>',
'<pre class="brush: html;">$1</pre>',
);
$text=preg_replace($text_a, $text_b, $text);
$text=nl2br($text);
return $text;
}
print view($mess);
?>
แล้ว thaicreate ใช้ฟังค์ชั่นไหน ในการแสดง ข้อความในเว็บบอร์ดครับ
ขอบคุณมากมายครับ
|
ประวัติการแก้ไข 2010-12-08 13:20:58 2010-12-08 13:25:37
|
|
|
|
Date :
2010-12-08 13:20:18 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จำไม่ได้เหมือนกันครับ แต่ตอนนั้นเจอปัญหาเช่นเดียวกันครับ ไว้เย็น ๆ จะไปดูแล้วมาตอบให้น่ะครับ
|
|
|
|
|
Date :
2010-12-08 14:08:59 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณคร๊าบบบ
|
|
|
|
|
Date :
2010-12-08 14:23:00 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
http://web-programming-bookmark.blogspot.com/2010/12/pregreplacecallback.html
ใช้ preg_replace_callback อย่างข้างบน
หรือใช้ preg_match แล้วใช้ loop ตัวแปรที่ matching โดยใช้ str_replace ทีละตัวก็ได้ครับ
|
|
|
|
|
Date :
2010-12-08 14:52:00 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class="brush: php;"
class="brush: js;"
class="brush: html;"
ตรง class เหล่านี้ มีสคริปทำการแปลงโค้ดภายใน html กลายเป็น text ธรรมดาอยู่ครับ
ส่วนที่ให้ดูจาก No 4 ไม่ได้มีปัญหาอะไร ต้องไปพิจารณาโค้ดส่วนอื่นครับ
|
|
|
|
|
Date :
2010-12-08 15:51:05 |
By :
xbeginner01 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันต้องเป็น ตัวแบบนี้ครับ < ถึงจะรันออกมาปรกติ
แต่พอแทนที่ไป การแสดงผลออกมากลายเป็น text หมดเลย
ไม่ออกมาในรูปคำสั่งซักตัว ไม่รู้จะแก้ยังไงครับ
|
|
|
|
|
Date :
2010-12-08 16:09:51 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<?php
function view($t){
$sr = array(
'/\[php\](.*?)\[\/php]/is' => '<pre class="brush: php;">%s</pre>',
'/\[js\](.*?)\[\/js]/is' => '<pre class="brush: js;" >%s</pre>',
'/\[html\](.*?)\[\/html]/is' => '<pre class="brush: html;" >%s</pre>',
);
foreach($sr as $s => $r){
preg_match_all($s, $t, $ms, PREG_SET_ORDER);
foreach($ms as $m) $t = str_replace($m[0], sprintf($r,htmlspecialchars($m[1])), $t);
}
return $t;
}
echo view(
'[php]<?php echo "test";?>
xxx
var j=1;
[html]<p>test</p>[/html]'
);
?>
[/php]
จริงๆ $text ควรจะถูก htmlspecialchars แต่ตอนแรกก่อนเรียก view
โดยใ้ช้โค้ดเดิมที่ไม่มี $text=nl2br($text); ครับ
แต่ก็ลองดูวิธีนี้ดูก็ได้ครับ
|
|
|
|
|
Date :
2010-12-08 17:39:54 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ ผมใช้เป็นแบบนี้ครับ
Code (PHP)
<?
function view($text){
$text=htmlspecialchars($text, ENT_QUOTES);
$text_a=array('/\[php\](.*?)\[\/php]/is',
'/\[js\](.*?)\[\/js]/is',
'/\[html\](.*?)\[\/html]/is',
);
$text_b=array( '<pre class="brush: php;">$1</pre>',
'<pre class="brush: js;" >$1</pre>',
'<pre class="brush: html;">$1</pre>',
);
$text=preg_replace($text_a, $text_b, $text);
return $text;
}
print view($mess);
?>
ขอบคุณทุกท่าน มากมายครับ
|
ประวัติการแก้ไข 2010-12-09 09:00:54
|
|
|
|
Date :
2010-12-09 08:30:49 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ปัญหาต่อมาครับ
พอตัดบรรทัด
$text=nl2br($text);
ออกไปแล้ว ข้อความไม่ขึ้นบันทัดใหม่
พอใส่เข้าไปเหมือนเดิม ก็มี <br> ต่อท้าย แล้วจะแก้ไงต่อครับ ซักทางนึง
|
|
|
|
|
Date :
2010-12-09 09:01:56 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รบกวนหน่อยนะครับผม...
|
|
|
|
|
Date :
2010-12-09 10:35:21 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองแล้วครับ แต่มันติดปัญหาตรงที่
ถ้าไม่ใช้ nl2br() ตรง syntax highlighter ก็ทำงานปรกติ
แต่มันก็ไม่ขึ้นบันทัดใหม่ในส่วนของ รายละเอียดอื่น ๆ
ถ้าใช้ nl2br() ตรงรายละเอียดส่วนอื่น ก็ขึ้นบันทัดให้ปรกติ
แต่ ตรง syntax highlighter มันกลับมี <br> ต่อท้าย
แก้ไงดีครับ
|
|
|
|
|
Date :
2010-12-13 13:43:59 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
http://web-programming-bookmark.blogspot.com/2010/12/replace-bbcode-to-syntaxhighlighter.html
โค้ดตรงนี้แก้ปัญหานั้นอยู่แล้วครับ
ข้อมูลที่ส่งให้ function
=====================================================================
<?php echo "test";?>
ทดสอบ
ว่าทำงานได้หรือยัง
test
xxx
var j=1;
[html]<p>test</p>[/html]
ผลลัพธ์
=====================================================================
<pre class="brush: php;">
<?php echo "test";?>
</pre><br>ทดสอบ<br> <br>ว่าทำงานได้หรือยัง<br> <br>test<br><pre class="brush: php;"> xxx</pre><br><pre class="brush: js;" >var j=1;</pre><br><pre class="brush: html;" ><p>test</p></pre>
=====================================================================
ดูตรง <br>ทดสอบ<br> <br>ว่าทำงานได้หรือยัง<br>
มีการแทรก <br> อยู่แล้วครับไม่ต้องใช้ nl2br อีกครั้ง
|
|
|
|
|
Date :
2010-12-13 14:27:14 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไ้ด้ละ ขอบคุณมากมายเลยครับ
|
|
|
|
|
Date :
2010-12-13 15:13:59 |
By :
boodemon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณ สายหมอก แก้ปัญหาด้วยวิธีไหนหรอครับ
|
|
|
|
|
Date :
2011-05-10 22:16:27 |
By :
kiama |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้ผมใช้ FCKEditor รับค่าจากผู้ใช้ แล้วเก็บใส่ฐานข้อมูล แต่ติดปัญหาตอนนำมาแสดง
ผมพยายามหาวิธีแก้ <br> <p>
ทำตามลิงค์ http://web-programming-bookmark.blogspot.com/2010/12/replace-bbcode-to-syntaxhighlighter.html นี้แล้วครับ
แต่ไม่เป็นผล นี้เป็นโค้ดที่ผมใช่
Code (PHP)
<div>
<?php
$str_get = $r["notify_detail"]; //ดึงค่าจากฐานข้อมูล
echo view($str_get);
?>
</div>
<?php
function view($t){
$br = '<!--x-->';
$t = str_replace(array("\r\n","\r","\n"),$br,htmlspecialchars($t)); //ผมเอาออก htmlspecialchars ครับ
$sr = array(
'/\[php\](.*?)\[\/php]/is' => '<pre class="brush: php;">%s</pre>',
'/\[js\](.*?)\[\/js]/is' => '<pre class="brush: js;" >%s</pre>',
'/\[html\](.*?)\[\/html]/is' => '<pre class="brush: html;" >%s</pre>',
);
foreach($sr as $s => $r){
preg_match_all($s, $t, $ms, PREG_SET_ORDER);
foreach($ms as $m) $t = str_replace($m[0], sprintf($r,str_replace($br,"\r\n",$m[1])), $t);
}
$t = str_replace($br,'<br'.'>',$t);
return $t;
}
?>
ผมได้ลองเอา funtion htmlspecialchars ออก ครับ เพราะทำให้โค้ดลดลง
ผลลัพธ์ที่ได้ครับ
นี้เป็นข้อมูลในฐานข้อมูลครับ
http://dl.dropbox.com/u/3914670/data.txt
ไม่รู้ติดต้องไหน ช่วยดูให้หน่อยนะครับ
|
ประวัติการแก้ไข 2011-05-10 23:12:41 2011-05-10 23:20:15
|
|
|
|
Date :
2011-05-10 23:10:59 |
By :
kiama |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|