我有一个允许用户输入数据的表单,在提交表单之前,它允许他们预览他们的工作:
<form>
...
<textarea id="option-question" name="option-question" cols="65" rows="7"></textarea><br />
<button onclick="preview_mc('question')" type="button">Preview</button><br />
</form>
预览功能如下所示:
function preview_mc(part){
$("#preview-"+part).text($("#option-"+part).val()).html(function(index, old) { return old.replace(/\n/g, '<br />') });
var math = document.getElementById("preview-"+part);
MathJax.Hub.Queue(["Typeset",MathJax.Hub,math]);
}
(每页有多个“部分”)。
当我从数据库调用数据时,它使用解析函数进行基本的bbcode解析,让我们称之为parse_message
。如何让预览也通过bbcode消息解析?编写一个模拟解析消息的javascript函数或以某种方式通过js调用PHP函数会更好吗? (如果编写javscript函数是最佳答案,那么非常感谢帮助这样做!)
这是消息解析:
function parse_message($message){
$find = array(
'~\[b\](.*?)\[/b\]~s',
'~\[i\](.*?)\[/i\]~s',
'~\[u\](.*?)\[/u\]~s',
'~\[quote\](.*?)\[/quote\]~s',
'~\[url\]((?:ftp|https?)://.*?)\[/url\]~s',
'~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s'
);
// HTML tags to replace BBcode
$replace = array(
'<b>$1</b>',
'<i>$1</i>',
'<span style="text-decoration:underline;">$1</span>',
'<blockquote>$1</'.'blockquote>',
'<a href="$1">$1</a>',
'<img src="$1" alt="" />'
);
// Replacing the BBcodes with corresponding HTML tags
return preg_replace($find,$replace,$message);
}
答案 0 :(得分:0)
感谢Darren的帮助。以下是我最终获得的代码:
使用Javascript:
function preview_mc(part){
$("#preview-"+part).text($("#option-"+part).val()).html(function(index, old) { return old.replace(/\n/g, '<br />') });
$.ajax({
url: 'include/functions.php',
type: 'post',
data: { "parse_message_call": $("#preview-"+part).text()},
success: function(response) { $("#preview-"+part).html(response); var math = document.getElementById("preview-"+part); MathJax.Hub.Queue(["Typeset",MathJax.Hub,math]);}
});
}
PHP:
function parse_message($message){
$find = array(
'~\[b\](.*?)\[/b\]~s',
'~\[i\](.*?)\[/i\]~s',
'~\[u\](.*?)\[/u\]~s',
'~\[quote\](.*?)\[/quote\]~s',
'~\[url\]((?:ftp|https?)://.*?)\[/url\]~s',
'~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s'
);
// HTML tags to replace BBcode
$replace = array(
'<b>$1</b>',
'<i>$1</i>',
'<span style="text-decoration:underline;">$1</span>',
'<blockquote>$1</'.'blockquote>',
'<a href="$1">$1</a>',
'<img src="$1" alt="" />'
);
// Replacing the BBcodes with corresponding HTML tags
return preg_replace($find,$replace,$message);
}
// for ajax
if(isset($_POST['parse_message_call'])) {
echo parse_message($_POST['parse_message_call']);
}