首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pre_split将撇号视为html实体。

Pre_split将撇号视为html实体。
EN

Stack Overflow用户
提问于 2015-04-17 11:06:41
回答 2查看 32关注 0票数 1

我目前使用以下方法将从数据库输出的utf8mb4_unicode_ci文本拆分为@、#、$和空格:

代码语言:javascript
复制
$textSplit = preg_split("/(?=[ @#$])/", $text, -1, PREG_SPLIT_NO_EMPTY);

但是,当我用撇号拆分一段数据库文本时,我得到了以下输出:

代码语言:javascript
复制
// $text is a database value that equals "Is this John's text?"
$textSplit = preg_split("/(?=[ @#$])/", $text, -1, PREG_SPLIT_NO_EMPTY);

// Outputs array(5) { [0]=> string(2) "Is" [1]=> string(5) " this" [2]=> string(5) " John&" [3]=> string(6) "#039;s" [4]=> string(5) " text" }
var_dump($textSplit);

有没有什么办法可以防止preg_split把撇号当作html实体来处理,从而像这样拆分文本?

代码语言:javascript
复制
array(4) { [0]=> string(2) "Is" [1]=> string(5) " this" [2]=> string(7) " John's" [3]=> string(5) " text" }
EN

回答 2

Stack Overflow用户

发布于 2015-04-17 11:33:26

如果有人遇到同样的问题,我可以使用htmlspecialchars_decode($text,ENT_QUOTES)来解决。感谢每个人在这个解决方案中的帮助!

票数 1
EN

Stack Overflow用户

发布于 2015-04-17 11:30:58

试着向后看:

代码语言:javascript
复制
/(?<!&)(?=[ @#$])/

它不会匹配&后面的任何字符,从而阻止&#xxx匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29689534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档