- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是我的 bbcode 数组中的示例代码。需要补充的我会在后面说明。
$find = array(
'~\<~s',
'~\>~s',
'~\[hr\]~s',
'~\[b\](.*?)\[/b\]~s',
'~\[i\](.*?)\[/i\]~s',
'~\[u\](.*?)\[/u\]~s',
'~\[s\](.*?)\[/s\]~s',
'~\[ul\](.*?)\[/ul\]~s',
'~\[li\](.*?)\[/li\]~s',
'~\[ol\](.*?)\[/ol\]~s'
);
$replace = array(
'<',
'>',
'<hr>',
'<b>$1</b>',
'<i>$1</i>',
'<span style="text-decoration:underline;">$1</span>',
'<del>$1</del>',
'<ul>$1</ul>',
'<li>$1</li>',
'<ol>$1</ol>'
);
$return = preg_replace($find, $replace, $text);
return nl2br($return);
我需要做的是添加一个 [item] 标签,该标签将从 mysql 数据库中获取数据。
[项目]16[/项目]将进入项目表并使用 id 16 获取名称和图像链接。然后显示:- 名称
我已经尝试这样做了一段时间,但走到了死胡同。任何建议都会很棒。谢谢。
回应@IllegalPigeon。
我能够修改您的代码,但我没有得到任何结果。我在我的主页上用一个大的查询来测试它。我已将其缩减为测试页面,运行了一个变量,但仍然无法获得任何结果。我正在使用 Mysqli 并且能够根据需要编辑查询。
我确信我走在正确的轨道上。可能只是遗漏了一些愚蠢的东西。
工作代码。从@IllegalPigeon 回答更新。
<?php
//just db stuff.
include("config.php");
// BBcode array
$find = array(
'~\<~s',
'~\>~s',
'~\[hr\]~s',
'~\[b\](.*?)\[/b\]~s',
'~\[i\](.*?)\[/i\]~s',
'~\[u\](.*?)\[/u\]~s',
'~\[s\](.*?)\[/s\]~s',
'~\[ul\](.*?)\[/ul\]~s',
'~\[li\](.*?)\[/li\]~s',
'~\[ol\](.*?)\[/ol\]~s'
);
$replace = array(
'<',
'>',
'<hr>',
'<b>$1</b>',
'<i>$1</i>',
'<span style="text-decoration:underline;">$1</span>',
'<del>$1</del>',
'<ul>$1</ul>',
'<li>$1</li>',
'<ol>$1</ol>'
);
$text = "Test text.... [item]6[/item] .... text text";
preg_match_all('#\[item\](.*?)\[/item\]#i', $text, $matches, PREG_SET_ORDER );
for ( $i = 0, $j = count( $matches ); $i < $j; $i++ )
{
$id = $matches[$i][1];
if(filter_var($id, FILTER_VALIDATE_INT))
{
//It's a number, now you need to do your query
//You didn't post most so modify your query to look like:
$sql = "SELECT name, image_url FROM items WHERE id = $id";
//Assuming you're using PDO, lets check if anything was returned
if( $result = $db->query($sql) )
{
$row = $result->fetch_assoc();
array_push($find, '~\[item\](.*?)\[/item\]~s');
array_push($replace, '<img src="' . $row['image_url'] . '" title="' . $row['name'] . '" />');
} else {
die('There was an error running the query [' . $db->error . ']');
}
}
}
$return = preg_replace($find, $replace, $text);
echo nl2br($return);
最佳答案
这完全未经测试,但是,我不明白为什么它不起作用。您将不得不自己进行一些编辑,因为我不知道您使用的是哪种数据库类(如果有的话)。
所以,试试这个代码:
$find = array(
'~\<~s',
'~\>~s',
'~\[hr\]~s',
'~\[b\](.*?)\[/b\]~s',
'~\[i\](.*?)\[/i\]~s',
'~\[u\](.*?)\[/u\]~s',
'~\[s\](.*?)\[/s\]~s',
'~\[ul\](.*?)\[/ul\]~s',
'~\[li\](.*?)\[/li\]~s',
'~\[ol\](.*?)\[/ol\]~s'
);
$replace = array(
'<',
'>',
'<hr>',
'<b>$1</b>',
'<i>$1</i>',
'<span style="text-decoration:underline;">$1</span>',
'<del>$1</del>',
'<ul>$1</ul>',
'<li>$1</li>',
'<ol>$1</ol>'
);
preg_match_all('#\[item\](.*?)\[/item\]#i', $text, $matches, PREG_SET_ORDER );
for ( $i = 0, $j = count( $matches ); $i < $j; $i++ )
{
$id = $matches[$i][1];
//Lets make sure it is a number.
if(filter_var($id, FILTER_VALIDATE_INT))
{
//It's a number, now you need to do your query
//You didn't post most so modify your query to look like:
//"SELECT name, image FROM yourTable WHERE id = $id"
//Assuming you're using PDO, lets check if anything was returned
if( $result = $con->fetch() )
{
array_push($find, '~\[item\](.*?)\[/item\]~s');
array_push($replace, '<img src="' . $result['image'] . '" title="' . $result['name'] . '" />');
}
}
}
$return = preg_replace($find, $replace, $text);
return nl2br($return);
关于php bbcode 与 mysql 检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33091099/
基本上,我正在尝试将 xenforo 的论坛脚本数据库转换为我的自定义数据库(放弃我在 xenforo 上的使用),他们的 bbcode 让我很烦。 我正在尝试将他们的所有 url bbcode 更改
好吧,让我解释一下我的意思是哪种“剧透标签”: 在我所在的 phpBB 论坛中,有一个 [剧透] BBCode 隐藏了里面的文本,有一个显示/隐藏的按钮,应该看起来像发布页面中的 prosilver
所以我创建了这个函数来替换字符串中的特殊字符。主要目的是替换 BBCode 标签内的那些特殊字符([code=any]我想显示的代码[/code]),但当时它是否替换其余部分并不重要BBcode 标签
我有一些 javascript 会变成 [b]test[/b]进入 test 还有,这个 [i]test 2[/i]会变成 test 效果很好,但我也需要能够对其进行解码。对于多种类型的 bbcode
这是脚本的 jQuery 变体(它不起作用): $("div.post-content").each(function(){ if($(this).innerHTML.indexOf("[/
我有一个字符串想要转换为 div,但它无法正确关闭 div。 我使用的示例字符串是这样的: [quote]Quote by: user1 [quote]Quote by: user2 ads[/quo
我有这个函数来解析 bbcode -> html: $this->text = preg_replace(array( '/\[b\](.*?)\[\/b\]/ms', '/\[i
我正在尝试找到一种从字符串中删除 BBCode 的方法。我发现的模块(BBCode 和 Post Markup)似乎只将它们转换为 HTML,而不是仅仅删除 BBCode 并返回一个干净的字符串。如果
我在装有最新操作系统的 mac book air 上使用最新版本的 chrome 浏览器。我正在尝试在 javascript 中创建一个 BBcode 解析器。我可以很容易地解析一行代码,例如 [b]
我编写了一个 Javascript bbcode,类似于我用来编写此消息的代码。它还包含一个实时预览框,如下图所示。我目前面临的唯一问题是某些嵌套的 bbcode 未解析。 例如: [quote]
我需要一个正则表达式来去除字符串中的任何 BBCode。我有以下内容(和一个带有标签的数组): new RegExp('\\[' + tags[index] + '](.*?)\\[/' + tags
我有一个非常简单的 Javascript BBCode 解析器用于客户端实时预览(不想为此使用 Ajax)。问题是,这个解析器只识别第一个列表元素: function bbcode_parser(st
因此,我正在尝试向我的网站 (bbCodes) 添加笑脸符号,但我不知道该怎么做。我的数据库中有所有笑脸触发词和输出,以便更轻松地删除/添加笑脸。 下面的这段代码什么都不做...我没有收到错误,它也没
我已经阅读过有关此主题的其他帖子,但似乎没有一个有帮助。 好的,我正在编写自己的 BBCode 解析器。现在我的问题是如何不解析 [code] 标签之间的 BBCode?我真的不知道该怎么做。这是我当
所以看起来这个问题已经被问到太阳下的几乎所有语言......除了 C++。我有一个 XML 文档,在文本节点中存储了一些 bbcode。我正在寻找删除它的最佳方法,我想我会在这里查看是否有人知道一些预
我编写了一个 Javascript bbcode,类似于我用来编写此消息的代码。它还包含一个实时预览框,如下所示。我目前面临的唯一问题是某些嵌套的 bbcode 无法解析。 例如: [quote]
我正在使用 BBcode 编辑器通过表单发布内容。当我通过按 Enter 键然后发送表单并在屏幕上打印发送的文本来创建新行时,所有内容都在一行中,并且没有 BBcode 代表它。起初我以为我使用的编辑
我目前正在尝试测试匹配以下内容的正则表达式模式: [#123456] [#aabc36] 然后转换成HTML代码: 但是如果模式像这样: [/#123456] 然后被替换为 我尝试了以下模式: \
我有这个正则表达式: \[code(?:=(["']?)(.{0,50}?)\1)?\](?!\s*\[\/code\])(.*?)\[\/code\] 这个正则表达式应该支持: [code]cont
我正在研究 bbcodes 的自定义实现(基本上是 Wordpress 短代码)。为此,我需要匹配可以在两个类似 bbcode 的标签之间找到的内容。 例如: [example]The content
我是一名优秀的程序员,十分优秀!