I have a web page where users can leave comments in Russian language (UTF-8), like this one:
Хорошо, четко , уверено!Удачи!(БОРИС)
Some users "abuse" it for fun purposes by leaving out the spaces between words
НеСпитьсяЖукуНиЗимою,НиЛетом,лучшеПитатьсяСолнечнымСветом, лучшеСидетьЗаИгорнымСтолом,иНаслаждатьсяКаждымВистом, лучшеНоситьЗолотыеОдежды,искритьсяВсегда,неТеряяНадежды,лучшеПустьДругОстаетсяБезВзятки,ведьНевозможноЖукуЖитьБезЛапки!
which results in very wide HTML-table rows, breaking my layout.
I'm trying to counter those users by trying to find comments with over 60 non-space characters and inserting a single space char after punctuation chars (like commas) - with this piece of PHP-code:
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);
}
However this doesn't work and has at least 2 problems
- Every comment is being matched, even short one like at the top
- The \s* isn't greedy and "comma and space" is replaced by "comma space space" for some weird reason
Here an excerpt of my log file:
[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)
I tried doubling the backslashes - this hasn't changed anything.
I'm using stock PHP with latest CentOS Linux 5.x and 6.x:
# 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