|
|
|
สอบถามทีครับว่าผมเขียน Function มา 2 ตัวครับ ทั้ง 2 ตัวมี preg_replace แต่ไม่สามารถอ่านค่าออกมาได้ครับแนะนำทีครับ |
|
|
|
|
|
|
|
ช่วยทีครับ พอดีผมเขียน ฟั่งชั่น PHP ไว้ 2 ตัวครับ
ตัวที่ 1 เป็นตัวหลัก คือ bbcodes
ตัวที่ 2 เรียกใช้งาน คือ process
สำหรับโค้ดของทั้ง 2 ตัวนะครับ
Code (PHP)
Public function bbcodes ($text) {
$str_search = array(
"#\r\n|\r|\n|\n\r#is",
"#\[p\](.+?)\[\/p\]#is",
"#\[b\](.+?)\[\/b\]#is",
"#\[i\](.+?)\[\/i\]#is",
"#\[s\](.+?)\[\/s\]#is",
"#\[u\](.+?)\[\/u\]#is",
"#\[url=(.+?)\](.+?)\[\/url\]#is",
"#\[url\](.+?)\[\/url\]#is",
"#\[img\](.+?)\[\/img\]#is",
"#\[size=([0-9])\](.+?)\[\/size\]#is",
"#\[color=(.+?)\](.+?)\[\/color\]#is",
"#\[list\](.+?)\[\/list\]#is",
"#\[list=(1|a|I)\](.+?)\[\/list\]#is",
"#\[\*\](.*)#",
"#\[h(1|2|3|4|5|6)\](.+?)\[/h\\1\]#is",
"#\[left\](.+?)\[\/left\]#is",
"#\[center\](.+?)\[\/center\]#is",
"#\[right\](.+?)\[\/right\]#is",
"#\[justify\](.+?)\[\/justify\]#is",
"#\[hr\]#is",
"#\[quote\](.+?)\[\/quote\]#is",
"#\[code\](.+?)\[\/code\]#is",
"#\[email=(.+?)\](.+?)\[\/email\]#is",
);
$str_replace = array(
'<br />',
'<p>\\1</p>',
'<strong>\\1</strong>',
'<span style="font-style:italic">\\1</span>',
'<span style="text-decoration:line-through">\\1</span>',
'<span style="text-decoration:underline">\\1</span>',
'<a href="\\1">\\2</a>',
'<a href="\\1">\\1</a>',
'<img src="\\1" />',
'<span style="font-size:1\\1px">\\2</span>',
'<span style="color:\\1">\\2</span>',
'<ul>\\1</ul>',
'<ol type="\\1">\\2</ol>',
'<li>\\1</li>',
'<h\\1>\\2</h\\1>',
'<div align="left">\\1</div>',
'<div align="center">\\1</div>',
'<div align="right">\\1</div>',
'<div align="justify">\\1</div>',
'<hr />',
'<blockquote class="quote">\\1</blockquote>',
'<code class="pre-code">'. self::process('\\1') .'</code>',
'<a href="mailto:\\1">\\2</a>',
);
return preg_replace($str_search, $str_replace, $text);
}
public static function process($text) {
$text = htmlspecialchars($text);
$text = str_replace('\\\\','\\\\<e>', $text);
$str_search = array(
'/([\-\!\%\^\*\(\)\+\|\~\=\`\{\}\[\]\:\"\'<>\?\,\.\/]+)/',
'/(?<!\w)((0x|\#)[\da-f]+|\d+| \d+(px|em|cm|mm|rem|s|\%))(?!\w)/ix',
'/(?<!\w|>|\#)([A-Z_0-9]{2,})(?!\w)/x'
);
$str_replace = array(
'<span class="P">$1</span>',
'<span class="N">$1</span>',
'<span class="D">$1</span>',
'<span class="K">$1</span>'
);
$tokens = array();
$text = preg_replace($str_search, $str_replace, $text);
$text = str_replace(array_keys($tokens), array_values($tokens), $text);
$text = str_replace(array('<e>', "\t"), array('', ' '), $text);
return $text;
}
ผมอยากทราบว่าผมจะใช้งาน ฟั่งชั่น process ในฟั่งชั่น bbcodes ได้อย่างไรครับ ช่วยแนะนำทีครับ
ผมงมมาตั้งแต่เมื่อวานแล้วครับ จนวันนี้ตอนเช้าแล้ว ยังไม่ได้เลยครับ T^T
Tag : PHP
|
ประวัติการแก้ไข 2015-10-03 09:43:00 2015-10-03 09:43:53
|
|
|
|
|
Date :
2015-10-03 06:51:59 |
By :
vilet224 |
View :
821 |
Reply :
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
Public function bbcodes ($text) {
...
$result=$this->process('test');
}
public static function process($text) {
.....
}
|
|
|
|
|
Date :
2015-10-03 09:22:41 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่านแล้วไม่เข้าใจ คุณเขียนโค๊ดตามที่คุณเข้าใจก่อน แล้วเอาโค๊ดที่ผิดผลาด พร้อมเออเร่อร์ มาให้ดู ครับ
และการแสดงโค๊ดต้องมีที่มาที่ไปให้ชัดเจน คุณเรียก ฟังก์ชั่นเหล่านี้ยังไง จากในคลาส เรียกแบบไหน
ตัวอย่างที่ให้มาก็เมคขึ้นมาไม่ได้เกิดจากการทดลองทำ
นักประดิษฐ์มันต้องเกิดจากการทดลองทำ ผิดถูกค่อยว่ากัน อย่ามโนเอาเองครับ
บางทีประสบการณ์มันน้อยเกินกว่าจะมานั่งมโนเอง ทดลองทำไม่เสียหายอะไร ได้ประสบการณ์เพิ่มด้วย
|
|
|
|
|
Date :
2015-10-03 09:46:15 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองแบบนี้ดูครับ
Code (PHP)
<?php
class bbcode{
Public function bbcodes ($text) {
$str_search = array(
...
...
);
$str_replace = array(
...
...
);
return preg_replace($str_search, $str_replace, $this->process($text));
}
public static function process($text) {
...
...
}
}
$testText = <<<HTML
<form name="TEST">
</form>
HTML;
$bb=new bbcode();
echo $bb->bbcodes(htmlspecialchars($testText));
ที่ไม่แสดง error เพราะอาจปิดการแสดงเออเร่อร์ไว้
error_reporting(E_ALL); // ทำให้แสดงเออเร่อร์ก่อน แต่คิดว่าคุณคงเขียนด้วย MVC
น่าจะเปิด evironment delvelop ไว้ก่อน อย่าเพิ่งใช้ on product
|
ประวัติการแก้ไข 2015-10-03 10:42:25
|
|
|
|
Date :
2015-10-03 10:38:38 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|