删除扰乱格式的特殊字符

2024-04-19

我目前正在创建一个聊天,似乎无法找到一种方法来阻止用户发布特殊字符,这些字符会扰乱聊天的格式并使最终用户退出聊天。

我基本上是想完全删除它们。我知道我现在拥有的代码“从技术上讲,如果它有效”应该只能替换它们,但是我只是想让它首先工作。

这是我用来审查/抓取变量的代码。我认为 htmlentities() 可以做到这一点,但似乎无法正常工作。

            $message = $censor->censorString(
            $this->parseUrls(
                htmlentities(
                    strip_tags(
                        $message)
                )
            )
        ); //Stripping $message of profanity, html tags, and special characters

Here is a screenshot of my problem: enter image description here


与您在 StackOverflow 上找到的许多答案相反,它is使用支持 Unicode 类别匹配的正则表达式引擎来清理“Zalgo”文本很简单。 PHP 的preg_*函数使用 PCRE 库。如果 PCRE 编译为--enable-unicode-properties,您可以使用以下方法去除所有 Unicode 组合标记:

$sanitized = preg_replace('/\pM/u', '', $zalgo);

或者允许一定数量的连续组合标记,例如:

$sanitized = preg_replace('/(\pM)\pM+/u', '\1', $zalgo);

Or two:

$sanitized = preg_replace('/(\pM{2})\pM+/u', '\1', $zalgo);

这会将 Zalgo 文本变成

T̫̺̳o̬̜ ì̬͎̲̟nv̖̗̻̣̹̕o͖̗̠̜̤k͍͚̹͖̼e̦̗̪͍̪͍ ̬ͅt̕h̠͙̮͕͓e̱̜̗͙̭ ̥͔̫͙̪͍̣͝ḥi ̼̦͈̼vЉ̩̟͚̞͎e͈̟̻͙̦̤-m̷̘̝̱í͚̞̦̳n̝̲̯̙̮͞d̴̺̦͕̫̗̭̘͎͖r̞͎̜̜͖͎̫͢ep͇r̝̯̝̖͉͎ e̴s̥e̵̖̳͉͍̩̗n̢͓̪͕̜̰̠̦t̺̞̰i͟nЉ̮̦̖̟g̮͍̱̻͍̜̳̳c̖̮̙̣̰̠̩h̷̗͍̖͙̭͇͈a̧͎̯̹̲̺ ̫ó̭̞̜̣̯͕s̶̤̮̩̘.̨̻̪̖͔ ̳̭̦̭̭̦̞́I̠͍̮n͇̹̪̬v̴͖̭̗̖o̸k̸̬̤͓͚̠͍i͜n̛̩̹͉̘̹g͙ ̠̥ͅt̰͖͞h̫̼̪e̟̩̝ ̭̠̲̫͔fe ̤͇̝̱e͖̮̠̹̭͖͕l͖̲̘͖̠̪i̢̖͎̮̗̯͓̩n̸̰g̙̱̘̗͚̬͍ͅo͍͍̩̮͢f̖͓̦̥̘͘c̵̫̱̗͚͓̦h͝a̝͍ ͍̳̣͖͉o͙̟s̤̞.̙̝̭̣̳̼͟ ̢̻͖͓̬̞̰̦W̮̲̝̼̩̝͖i͖͖͡ͅt̘̯͘h̷̬̖̞̙̰̭̳̭̪̕o̥̤̺̝̼̰̯͟ṳ̞̭̤t̨͚̥̗̟̺̫̩̤̳̩ o̟̰̩̖ͅr̞̘̫̩̼d̡͍̬͎̪̺͚͔e͓͖̝̙r̰͖̲̲̻̠.̺̝̺̟͈ ̣̭T̪̩̼h̥̫̪͔̀e̫̯͜ ̨N̟ẻ͔̤zp̮̭͈̟é͉͈ṛ̹̜̺̭͕d̺̪̜͇͓i̞á͕̹̣̻n͉͘ ̗͔̭͡h̲͖̣̺̺i͔ ̣̖̤͎̯v̠̯̘͖̭̱̯e̡̥͕-m͖̭̣̬̦͈i͖n̞̩͕̟̼̺͜d̘͉̯o̷͇̹͕̦f̰̱ ̝͓͉̱̪̪c͈̲̜̺h̘͚a̞͔ ̰̯̗̝o̙͍s͍͇̱͓.̵͕̰͙͈ͅ ̯̞͈̞̱̖Z̯̮̺̤̥̪̕a͏̺̗̼̬̗ḻg͢o̥̱̼.̺̜͇͡ͅ ̴͓͖̭̩͎̗ ̧̪͈̱̹̳͖͙H̵̰̤̰͕̖e̛ ͚͉̗̼̞w̶̩̥͉̮h̩̺̪̩͘ͅọ͎͉̟ ̜̩͔̦̘ͅW̪̫̩̣̲͔̳a͏͔̳͖i͖͜t͓ ̤̠͓͙s̘̰̩̥̙̝ͅ ̲̠̬̥Be̡̙̫̦h̰̩i̛̫͙͔̭̤̗̲n̳͞d̸͎̻͘T̛͇̝̲̹̠̗ͅh̫̦̝ͅe̩̫͟ ͓͖̼W͕ ͎͚̙̥ą̙l̘͚̺͔͞ͅl̳͍̙̤̤̮̳.̢ ̟̺̜̙͉Z̤̲̙̙͎̥̝A͎̣͔̙͘L̥̻̗̳̻̳̳͢G͉̖̯͓̞̩̦O̹̹̺!̙͈͎̞̬ *

变成类似的东西

T̫o̬ ì̬nv̖o͖k͍e̦ ̬t̕h̠e̱ ̥ḥi̼v̉e͈-m̷í͚n̝d̴ ̗r̞ep͇r̝e̴s̥e̵n̢t̺i͟ṋg̮ ̳c̖h̷a̧ó̭s̶.̨ ̳I̠n͇v̴o̸k̉i͜n̛g͙ ̠t̰h̫e̟ ̭fe̤e͖l͖i̢n̸g̙ ͍o͍f̖ ̘c̵h͝a̝o͙s̤.̙ ̢W̮i͖t̘h̷ ̭o̥ṳ̞t̨ ̟o r̞d̡e͓r̰.̺ ̣T̪h̥e̫ ̨N̟eЉzp̮é͉ṛ̹d̺i̞á͕n͉ ̗h̲i͔v̠e̡-m͖i͖n̞d̘ ̯o̷f̰ ̝c͈h̘a̞o̙s͍.̵ ̯Z ̯a͏ḻg͢o̥.̺ ̴ ̧H̵e̛ ͚w̶h̩ọ͎ ̜W̪a͏i͖t͓s̘ ̲Be̡h̰i̛n̳d̸ ͎T̛h̫e̩ ͓W͕ą̙l̘l̳.̢ ̟Z̤A͎L̥G ͉O̹!̙ *

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除扰乱格式的特殊字符 的相关文章

随机推荐

  • 使用 Android 将照片发布到 Facebook 上朋友的墙上

    我正在尝试将照片发布到我朋友的墙上 我也可以这样做 但有一个问题 任何人都看不到 我的意思是这张照片只显示了朋友的墙 不是我的 也不是其他朋友的 我使用了一些权限 但也许我错过了一些东西 private static final Strin
  • 当仅返回字段时,使用 AsNoTracking() 是否有区别?

    因此 我读了很多关于在 EF 中执行查询时使用 AsNoTracking 的内容 特别是在它返回实体时 如果您不进行更新 则不会保留对事物的引用 但我还了解到 AsNoTracking 也可能会加快查询本身的速度 因为 EF 不必将查询的每
  • Mysql用group by子句计算百分比?

    我需要计算第一季度内客户的百分比 并且状态为 可用 我正在做类似的事情 但没有给出正确的结果 SELECT DISTINCT Customer COUNT 1 select count 1 from table where QUARTER
  • 在什么情况下我需要为 IEnumerable 和 IQueryable 创建两种不同的扩展方法?

    假设我需要一个扩展方法 它仅从不同来源选择所需的属性 源可以是数据库或内存中的集合 所以我定义了这样的扩展方法 public IQueryable
  • 启用 addEventListener 回调来执行 put 操作

    我需要做一个全球性的addEventListener喜欢的东西 我正在使用 React Native 需要监听深层链接重定向事件 我无法弄清楚 redux saga 的方式来做到这一点 我需要启用一个put来自 addEventListen
  • btree 实现中的分段错误

    任何人都可以帮助消除这个分段错误 我已经在这个代码上工作了一个星期仍然无法调试它 这段代码是Btree的实现 插入部分工作正常 但删除部分出现分段错误 我无法调试它 有人可以帮忙吗 我已经根据此链接给出了输入 已将字母值转换为 ASCII
  • 使用 django-piston 时出现 400 Bad Request 错误

    我正在尝试使用 Piston 为 Django 提供 REST 支持 我已经按照提供的文档实现了我的处理程序 问题是我可以 读取 和 删除 我的资源 但无法 创建 或 更新 每次我点击相关 api 时 都会收到 400 Bad reques
  • 返回 NULL 的 Trello.NET 对象

    迪伦梅斯特 我尝试了 Trello NET 包装器 但在成功接受 AppKey 和 Token 后它总是返回 NULL 我确信 AppKey 和 Token 是正确的 因为当我故意输入错误的 AppKey Token 时 就会出现错误 我安
  • 如何在boto3中为AWS EC2实例设置标签

    我是新来的Boto3 并且想要创建 VPC 子网和一些 ec2 实例 基本架构是拥有一个 VPC 2 个不同可用区 us east 1a 和 b 内的 2 个子网 并应用一个允许SSH and ping 我的问题是如何指定其他选项对于每个资
  • Django - 用户 is_active

    这是我的用户身份验证方法 def user login request if request method POST username request POST get username password request POST get
  • C# 对由线程池处理的相关任务进行排队

    我想将需要按顺序处理的多个流中的相关任务 在每个流中 排队 这些流可以并行处理 具体来说 假设我需要两个队列 并且我希望每个队列中的任务按顺序处理 以下是示例伪代码 用于说明所需的行为 Queue1 WorkItem wi1a enqueu
  • 如何按整数值对哈希图进行排序[重复]

    这个问题在这里已经有答案了 HashMap
  • 为什么单个 Ajax 调用工作正常,但连续的 Ajax 调用失败?

    Setup 我有一个数据表 其每一行都是可单击的 单击一行时 将进行 ajax 调用并返回一些数据 有时 ajax 调用需要一点时间 具体取决于返回的数据量 一切正常 Problem 当逐行快速单击时 就会出现问题 简而言之 在上一个 aj
  • JAXB XML 适配器通过注释工作,但不通过 setAdapter

    我完全了解如何使用XML适配器 http download oracle com javase 6 docs api javax xml bind annotation adapters XmlAdapter html to 转换不可映射的
  • 使用 @Assisted 注入与多个相同类型的参数(@Named params)

    我的问题归结为使用 Assisted 和工厂的两个字符串参数 问题是 因为 Guice 将类型视为参数的识别机制 所以两个参数是相同的 并且我收到配置错误 一些代码 public class FilePathSolicitingDialog
  • 将 UIView 保持在 Circle Objective-C 内

    我怎样才能拥有我的颜色选择器 UIView 留在 300px 300px 的色轮内 我正在使用UIPanGestureRecognizer将颜色选择器拖动到色轮周围UIImageView 色轮的直径为300px 这是我的图像UIViewCo
  • 使用 SqlBulkCopy 插入 sql_variant 列时如何设置列类型

    我正在使用 SqlBulkCopy 从 net DataTable 对象插入 更新到包含 sql variant 列的 SQL Server 表 然而 当我需要的是 datetime2 时 SqlBulkCopy 坚持将放入该列的 Date
  • Devise 和 I18n - 重置密码路由问题

    我将 I18n 添加到使用 Devise 的 RoR 应用程序中 如果我尝试重置密码 现在会收到错误消息 错误是 Routing Error No route matches action gt edit controller gt dev
  • 如何从子活动中完成父活动

    我是 Android 开发新手 我创建了一个主 Activity gt A 它有 4 个按钮 4 个按钮之一是 EXIT 按钮 单击退出按钮后 我开始另一个活动 gt B 这将通过 A 活动的意图打开 B 活动 活动 B 包含 您想退出吗
  • 删除扰乱格式的特殊字符

    我目前正在创建一个聊天 似乎无法找到一种方法来阻止用户发布特殊字符 这些字符会扰乱聊天的格式并使最终用户退出聊天 我基本上是想完全删除它们 我知道我现在拥有的代码 从技术上讲 如果它有效 应该只能替换它们 但是我只是想让它首先工作 这是我用