DZ在编辑帖子之后会在帖子内容之前附加上字符串
[i=s]本帖最后由 waiting 于 2011-11-3 17:10 编辑[/i]
当浏览帖子时如果 bbcodeoff == false则解析为如下的HTML代码:
<i class="pstatus">本帖最后由 waiting 于 2011-11-3 17:10 编辑</i>
不过当bbcodeoff == true则不解析而原样输出。
编辑 include/discuzcode.func.php 文件让DZ在不解析bbcode时依旧能且仅能解析‘最后编辑’的标签:
大约在135行,找到
if(!$bbcodeoff && $allowbbcode) {
...
}
这个段落,整段替换如下:
if($allowbbcode) {
if (!$bbcodeoff) { // <------- 单独判断,小节内代码不变
if(strpos($msglower, '[/url]') !== FALSE) {
$message = preg_replace("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/|www\.|mailto:)([^\s\[\"']+?))?\](.+?)\[\/url\]/ies", "parseurl('\\1', '\\5')", $message);
}
if(strpos($msglower, '[/email]') !== FALSE) {
$message = preg_replace("/\[email(=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+))?\](.+?)\[\/email\]/ies", "parseemail('\\1', '\\4')", $message);
}
$message = str_replace(array(
'[/color]', '[/size]', '[/font]', '[/align]', '[b]', '[/b]', '[s]', '[/s]', '[hr]', '[/p]',
'[i=s]', '[i]', '[/i]', '[u]', '[/u]', '[list]', '[list=1]', '[list=a]',
'[list=A]', '[*]', '[/list]', '[indent]', '[/indent]', '[/float]'
), array(
'</font>', '</font>', '</font>', '</p>', '<strong>', '</strong>', '<strike>', '</strike>', '<hr class="solidline" />', '</p>', '<i class="pstatus">', '<i>',
'</i>', '<u>', '</u>', '<ul>', '<ul type="1" class="litype_1">', '<ul type="a" class="litype_2">',
'<ul type="A" class="litype_3">', '<li>', '</ul>', '<blockquote>', '</blockquote>', '</span>'
), preg_replace(array(
"/\[color=([#\w]+?)\]/i",
"/\[size=(\d+?)\]/i",
"/\[size=(\d+(\.\d+)?(px|pt|in|cm|mm|pc|em|ex|%)+?)\]/i",
"/\[font=([^\[\<]+?)\]/i",
"/\[align=(left|center|right)\]/i",
"/\[p=(\d{1,2}), (\d{1,2}), (left|center|right)\]/i",
"/\[float=(left|right)\]/i"
), array(
"<font color=\"\\1\">",
"<font size=\"\\1\">",
"<font style=\"font-size: \\1\">",
"<font face=\"\\1 \">",
"<p align=\"\\1\">",
"<p style=\"line-height: \\1px; text-indent: \\2em; text-align: \\3;\">",
"<span style=\"float: \\1;\">"
), $message));
$nest = 0;
while(strpos($msglower, '[table') !== FALSE && strpos($msglower, '[/table]') !== FALSE){
$message = preg_replace("/\[table(?:=(\d{1,4}%?)(?:,([\(\)%,#\w ]+))?)?\]\s*(.+?)\s*\[\/table\]/ies", "parsetable('\\1', '\\2', '\\3')", $message);
if(++$nest > 4) break;
}
if($parsetype != 1) {
if(strpos($msglower, '[/quote]') !== FALSE) {
$message = preg_replace("/\s?\[quote\][\n\r]*(.+?)[\n\r]*\[\/quote\]\s?/is", tpl_quote(), $message);
}
if(strpos($msglower, '[/free]') !== FALSE) {
$message = preg_replace("/\s*\[free\][\n\r]*(.+?)[\n\r]*\[\/free\]\s*/is", tpl_free(), $message);
}
}
if(strpos($msglower, '[/media]') !== FALSE) {
$message = preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/ies", $allowmediacode ? "parsemedia('\\1', '\\2')" : "bbcodeurl('\\2', '<a href=\"%s\" target=\"_blank\">%s</a>')", $message);
}
if($allowmediacode && strpos($msglower, '[/audio]') !== FALSE) {
$message = preg_replace("/\[audio\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/ies", "parseaudio('\\1')", $message);
}
if($allowmediacode && strpos($msglower, '[/flash]') !== FALSE) {
$message = preg_replace("/\[flash\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", "<script type=\"text/javascript\" reload=\"1\">document.write(AC_FL_RunContent('width', '550', 'height', '400', 'allowNetworking', 'internal', 'allowScriptAccess', 'never', 'src', '\\1', 'quality', 'high', 'bgcolor', '#ffffff', 'wmode', 'transparent', 'allowfullscreen', 'true'));</script>", $message);
}
if($parsetype != 1 && $allowbbcode == 2 && $GLOBALS['_DCACHE']['bbcodes']) {
$message = preg_replace($GLOBALS['_DCACHE']['bbcodes']['searcharray'], $GLOBALS['_DCACHE']['bbcodes']['replacearray'], $message);
}
if($parsetype != 1 && strpos($msglower, '[/hide]') !== FALSE) {
if(strpos($msglower, '[hide]') !== FALSE) {
if($GLOBALS['authorreplyexist'] === '') {
$GLOBALS['authorreplyexist'] = !$GLOBALS['forum']['ismoderator'] ? $db->result_first("SELECT pid FROM {$tablepre}posts WHERE tid='$tid' AND ".($discuz_uid ? "authorid='$discuz_uid'" : "authorid=0 AND useip='$GLOBALS[onlineip]'")." LIMIT 1") : TRUE;
}
if($GLOBALS['authorreplyexist']) {
$message = preg_replace("/\[hide\]\s*(.+?)\s*\[\/hide\]/is", tpl_hide_reply(), $message);
} else {
$message = preg_replace("/\[hide\](.+?)\[\/hide\]/is", tpl_hide_reply_hidden(), $message);
$message .= '<script type="text/javascript">replyreload += \',\' + '.$pid.';</script>';
}
}
if(strpos($msglower, '[hide=') !== FALSE) {
$message = preg_replace("/\[hide=(\d+)\]\s*(.+?)\s*\[\/hide\]/ies", "creditshide(\\1,'\\2', $pid)", $message);
}
}
}
// 添加开始
elseif ($bbcodeoff && substr($message, 0, 5) === '[i=s]') { // allow parse '[i=s]last modified by [/i]' even if bbcodeoff
$message = preg_replace( "/\[i=s\](.*)\[\/i\]/", "<i class=\"pstatus\">\\1</i>", $message );
} // 添加结束
}
分享到:
相关推荐
【标题】"Go-Discuz7.2转换为HYBBS"涉及的主要知识点是论坛系统的迁移与转换,这里主要讨论如何将基于PHP的Discuz! 7.2论坛转换为用Go语言编写的HYBBS论坛系统。 【描述】"Discuz7.2 转换为 HYBBS"意味着我们需要将...
3. **界面展示**:在JForum中,BBCode的界面通常是指用户在编辑帖子时看到的文本编辑器,它提供了可视化的BBCode标签选择,比如按钮,用户点击后会在文本中插入相应的BBCode。 4. **源码分析**:通过阅读jforum...
这可能是在配置文件中,也可能是在数据库中,或者是硬编码在源码内部。一旦找到,我们可以将其复制出来以便后续使用。 3. **模板抽取**:然后,我们将BBCode模板抽取出来,这可能涉及到解析配置文件或数据库查询。...
**Python库 django-precise-bbcode-1.0** `django-precise-bbcode-1.0.tar.gz` 是一个针对Python编程...通过这个库,开发者可以轻松地构建富文本编辑器,让用户在论坛、博客或其他互动平台中享受到更丰富的文字表达。
Laravel开发-bbcode 从或到HTML的bbcode解析器。
在这种情况下,“html2bbcode”库可以帮助各个节点安全地转换接收到的HTML,符合云原生架构中对安全和解耦的高要求。 Python库的使用和开发是提升开发效率和代码质量的关键。对于“html2bbcode”,我们可以直接通过...
在不熟悉HTML的情况下,用户可以通过简单的BBcode标签来实现诸如加粗、斜体、插入链接、图片等操作。 这款编辑器是用C#编程语言编写的,C#是一种面向对象的、类型安全的编程语言,由微软公司开发并推广,主要应用于...
2. `LICENSE`: 文件包含了bbcode库的许可协议信息,通常为开源许可,比如MIT或Apache 2.0,允许开发者在特定条件下使用、修改和分发该库。 3. `README`: 文件可能包含关于bbcode库的介绍、安装指南、使用示例以及...
【ubb代码编辑器与Discuz论坛系统】 在互联网社区建设和管理中,编辑器扮演着至关重要的角色,它允许用户发布和编辑内容。Discuz! 是一款广泛应用的开源论坛软件,其内置的ubb(Unified BBCode)代码编辑器是论坛...
PHP 的 BBCode extension 是一个为 PHP 语言专门设计的模块,使得 PHP 能够解析和处理 BBCode 格式的文本,将其转换成 HTML 或其他格式,以便在网页上正确展示。 标题 "bbcode-1.0.2.tgz" 暗示这是一个名为 "bbcode...
BBCode转换器 一个Java库,提供了一个类来有效地将自定义BBCode转换为HTML。 还可以防止XSS攻击。 从Maven那里获取它: < groupId>io.github.matafokka < artifactId>bbcode-converter < version>1.0 或从...
html解析,轻量级html解析,不希望大家下载,我自己的备份 下下来也有密码,解压不了的
p1 = 开始标签p2 = 起始标签值p3 = 选择标签 1 长度 1-3 p4 = 选择标签 1 值p5 = 选择标签 2 长度 1-16 p6 = 选择标签 2 值p7 = 开始和结束标签之间的文本p8 = 结束标签要编辑/添加标签解析,只需更改 switch 语句...
【Laravel开发-bbcodeparser】是一个专门为Laravel框架设计的库,用于处理和解析BBCode格式的文本。BBCode是一种轻量级的标记语言,常用于论坛、评论系统等,用户可以使用它来增强纯文本,如添加粗体、斜体、链接等...
var bbcode = converter . feed ( data ) ;console . log ( bbcode . toString ( ) ) ; $ npm install -g html2bbcode$ html2bbcode --imagescale test.html选项 new HTML2BBCode ( { // enable image scale, ...
Keloran 的 bbCode 编辑器这是我的 bbCode 编辑器,可以实时替换 Hammer 框架中使用的某些内容,因此您可以查看提交后实际显示的内容这也可以在任何网站上使用,它都是 javascript,所以不需要 Hammer启动它$("#...
在ASP.NET平台上,Discuz的UBB编辑器提供了Web开发中的富文本编辑功能,便于用户在不熟悉HTML的情况下也能创建丰富多彩的帖子内容。 在ASP.NET环境中,UBB编辑器通常由一个服务器控件实现,它提供了一个可视化的...
5月的下一个版本将是所见即所得的编辑器。 目前没有足够的时间。 标签用法 第一版目标 标签 方法 [img] url [/ img] 创建带有灯箱的图像元素 [b]文字[/ b] 粗体字体样式 [h1]文字[/ h1] 创建h2元素 [h2]文字[/ ...
"天枫所见即所得UBB编辑器asp版(Discuz编辑器)" 是一款基于ASP编程语言开发的在线文本编辑工具,它允许用户在网页上以所见即所得的方式编辑内容,类似于Discuz! 论坛系统中的编辑器。这款编辑器主要服务于Web开发者...
"BBCode-to-Markdown-Converter"是一个实用工具,目的是将BBCode格式的文本转换为Markdown格式,方便在支持Markdown的平台(如GitHub、GitLab或Markdown编辑器)上使用。 这个基于Web的转换器是由JavaScript编写的...