2

次のような、ユーザーがロシア語(UTF-8)でコメントを残すことができるWebページがあります。

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

一部のユーザーは、単語間のスペースを省略して、楽しい目的でそれを「悪用」します

НеСпитьсяЖукуНиЗимою,НиЛетом,лучшеПитатьсяСолнечнымСветом, лучшеСидетьЗаИгорнымСтолом,иНаслаждатьсяКаждымВистом, лучшеНоситьЗолотыеОдежды,искритьсяВсегда,неТеряяНадежды,лучшеПустьДругОстаетсяБезВзятки,ведьНевозможноЖукуЖитьБезЛапки!

その結果、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つの問題があります

  1. 上部のような短いコメントも含め、すべてのコメントが一致しています
  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)

バックスラッシュを2倍にしてみましたが、何も変わっていません。

最新のCentOSLinux5.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
4

2 に答える 2

3

試してみてくださいwordwrap()。これは組み込み関数であり、役立つはずだと思います。

reg-expソリューションをお探しの場合は、コメントに1つあります。こちらをご覧ください。UTF-8で安全なので、ロシアのサイトで機能するはずです。

于 2012-06-04T15:03:10.943 に答える
1

コメントをspanまたはdiv要素に配置できます。

<td><span class="comment">лучшеПитатьсяСолнечнымСветом</span></td>

そして、次の定義をcssファイルに入れます。

span.comment
{
    max-width: 300px;
    overflow: hidden;
}

これにより、意図したよりも大きいものがすべて非表示になります。

于 2012-06-04T15:12:54.660 に答える