【发布时间】:2016-10-27 22:21:12
【问题描述】:
我正在使用 TinyMCE 将一些 HTML 保存到 phpMyAdmin 中的 SQL 表中。从表中插入和检索行工作正常。
我正在使用正则表达式来翻译检索到的文本中的一些短代码,这就是出现问题的地方。
这是我的正则表达式,它只是获取两个短代码之间的文本,可能带有 html 标记和换行符:
/(<.+>)?[[]{$code}[]](<\/.+>)?((?:\n.+\n?)+)(<.+>)?[[]{$code}[]](<\/.+>)?/
当我从数据库中检索 HTML 并在其上运行正则表达式时,preg_match_all() 无法匹配任何内容,但是当我双击数据库中的行并打开内联编辑器时,phpMyAdmin 会匹配。 ..something 并自动对行执行更新并将文本设置为新值;然后,当我对新更新的值运行正则表达式时,preg_match_all() 匹配正确的值。
我在想这是一些自动文本编码转换之类的,但在我插入之前在 HTML 上运行 mb_detect_encoding() 确实确认编码是 UTF-8 与表格的 utf8_unicode_ci 相同。
然后我比较了 Notepad++ 更新前后的文本和 EOL 字符,它们完全相同,但我的正则表达式在 phpMyAdmin 更新之前不起作用。
phpMyAdmin 正在做什么来修复文本,在它被插入数据库之前我该怎么做?为什么它会自动更新行?
【问题讨论】:
-
如果我是你,我会先将值保存在 $_SESSION 中,然后再将其保存到数据库中,然后在 PHPMyAdmin 上发生更新后我将获得新值并进行比较。也许使用 strlen(),使用 htmlspecialchars()...甚至用 ord() 替换每个字符...我只是在大声思考。附言如果您可以显示一些代码或提供 jsfiddle 会更好地帮助我们。
标签: php html mysql phpmyadmin