gpt4 book ai didi

php - 在 UTF8 单词之间插入空格 - 我的 2 个简单正则表达式有什么问题?

转载 作者:行者123 更新时间:2023-12-04 18:19:56 25 4
gpt4 key购买 nike

我有 a web page用户可以用俄语 (UTF-8) 发表评论,例如:

Хорошо, четко , уверено!Удачи!(БОРИС)

一些用户为了好玩而“滥用”它,省略了单词之间的空格
НеСпитьсяЖукуНиЗимою,НиЛетом,лучшеПитатьсяСолнечнымСветом, лучшеСидетьЗаИгорнымСтолом,иНаслаждатьсяКаждымВистом, лучшеНоситьЗолотыеОдежды,искритьсяВсегда,неТеряяНадежды,лучшеПустьДругОстаетсяБезВзятки,ведьНевозможноЖукуЖитьБезЛапки!

这导致非常宽的 HTML 表格行,破坏了我的布局。

我试图通过尝试查找包含超过 60 个非空格字符的评论并在标点符号(如逗号)之后插入一个空格字符来对抗这些用户 - 使用这段 PHP 代码:
            if (preg_match('/\S{60,}/u', $about) == 1) {
error_log('Splitting comment: ' . $about);
$about = preg_replace('/(\p{P}+\s*)/u', '$1 ', $about);
error_log('===Result comment: ' . $about);
}

然而这不起作用并且至少有2个问题
  • 每个评论都被匹配,即使是顶部的短评论
  • \s* 不是贪婪的,并且出于某种奇怪的原因,“逗号和空格”被“逗号空格”替换

  • 这是我的日志文件的摘录:
    [04-Jun-2012 09:50:10] Splitting comment: Хорошо, четко , уверено!Удачи!(БОРИС)
    [04-Jun-2012 09:50:10] ===Result comment: Хорошо, четко , уверено! Удачи!( БОРИС)

    [04-Jun-2012 09:50:10] Splitting comment: НеСпитьсяЖукуНиЗимою,НиЛетом,лучшеПитатьсяСолнечнымСветом,
    лучшеСидетьЗаИгорнымСтолом,иНаслаждатьсяКаждымВистом, лучшеНоситьЗолотыеОдежды,искритьсяВсегда,неТеряяНадежды,лучшеПустьДругОстаетсяБезВзятки,ведьНевозможноЖукуЖитьБезЛапки!(nusja)
    [04-Jun-2012 09:50:10] ===Result comment: НеСпитьсяЖукуНиЗимою, НиЛетом, лучшеПитатьсяСолнечнымСветом,
    лучшеСидетьЗаИгорнымСтолом, иНаслаждатьсяКаждымВистом, лучшеНоситьЗолотыеОдежды, искритьсяВсегда, неТеряяНадежды, лучшеПустьДругОстаетсяБезВзятки, ведьНевозможноЖукуЖитьБезЛапки!( nusja)

    我尝试将反斜杠加倍 - 这并没有改变任何东西。

    我正在使用带有最新 CentOS Linux 5.x 和 6.x 的股票 PHP:
    # php -v
    PHP 5.3.3 (cli) (built: May 7 2012 17:58:11)
    Copyright (c) 1997-2010 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

    最佳答案

    试试 wordwrap() .这是一个内置函数,我认为它应该对您有所帮助。

    如果您正在寻找正则表达式解决方案,评论中有一个 - look here .它是 UTF-8 安全的,因此它应该适用于您的俄罗斯网站。

    关于php - 在 UTF8 单词之间插入空格 - 我的 2 个简单正则表达式有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10883402/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com