Я сейчас разрабатываю форум. В потоках я хочу, чтобы пользователь мог цитировать другие сообщения в своем собственном сообщении. Пока это работает, единственная проблема, с которой я столкнулся, это кавычки внутри кавычек.
Вот мой PHP-код:
<?php
$text = preg_replace_callback('/\[quote=([^]]+);([0-9]+)\]([^]]+)\[\/quote\]/i', function($matches){
// Include MySQLi into function
global $DB;
$get = $DB->query("SELECT quote.date, quote.text, user.username FROM forum AS quote INNER JOIN users AS user ON quote.userid = user.id WHERE quote.id = '".beforeDB($matches[2])."'");
$row = $get->fetch_array();
if($get->num_rows == 0)
return "";
$return = '
<div class="box table">
<table width="100%">
<tr style="height: 22px;"><td style="width: 122px; background: #e8e8e8;"><div style="font-weight: bold; padding-top: 5px; '.(userColor($row['username']) != false ? 'color: '.userColor($row['username']).';' : '').'">'.$row['username'].'</div></td><td style="background: #e8e8e8; padding-left: 5px;">'.dateFunction($row['date'], true, true, true).'</td></tr>
<tr><td colspan="2" style="border-top: 1px solid #aaaaaa; background: #efefef; padding: 3px;">'.$row['text'].'</td></tr>
</table>
</div>
';
return $return;
}, $text);
?>
Это, как я уже говорил, работает. В таблице форума хранятся как сообщения, так и темы.
Однако, если я напишу это в сообщении, это не сработает:
[quote=Admin;1]Hi guys![/quote]
[quote=Admin;1]Hi guys!
[quote=Mod;3]Whats up?[/quote][/quote]
С приведенными выше BB-кодами работают первая и вторая котировки. Однако кавычки внутри цитаты не работают. Как я могу это исправить?
~.*\K\[quote=([^;]+);(\d+)\].*?\[/quote\]~is
- person Sam   schedule 03.06.2014