Closed sanasol closed 7 years ago
Before and after cleaning
http://dsro.ru/gyazo/images/582b3432ce58641d6a6ee1cb6c1e.png
Hi @S-anasol! First of all, thanks for contribution.
I suggest trim() not works for you because you have
in your strings. Can you check that? Or share any string with that buggy spaces.
$str = preg_replace('/\s+/', ' ', $str);
is not a best solution becouse string may have >1 space inside by design.
I found info regarding issue with " " here: http://php.net/manual/ru/function.html-entity-decode.php Quote:
Note:
You might wonder why trim(html_entity_decode(' ')); doesn't reduce the string to an empty string, that's because the ' ' entity is not ASCII code 32 (which is stripped by trim()) but ASCII code 160 (0xa0) in the default ISO 8859-1 encoding.
and solution here:
http://php.net/manual/en/function.trim.php#98812
So, maybe it wold be better just replace trim($str)
to trim($str, " \t\n\r\0\x0B" . chr(0xC2).chr(0xA0))
instead of doing preg_replace. What do you think?
Can you check this code?
Upd: можно по-русски, если что :)
В общем, пока не мержу, предлагаю обсудить вариант с
trim($str, " \t\n\r\0\x0B" . chr(0xC2).chr(0xA0))
I suggest trim() not works for you
Кто сказал что не работает? У меня всё хорошо с trim и остальным :)
$str = preg_replace('/\s+/', ' ', $str); is not a best solution
Я считал что это лучшее решение по простоте и функциональности, но не по по используемым ресурсам конечно :) Вообще регулярки не люблю.
may have >1 space inside by design.
ни разу не встречал такого. Так чтоб по два пробела(или тем более больше) между словами было. Хотя бы потому что html в браузере отображает только один пробел всегда, даже если 10 поставить.
trim($str, " \t\n\r\0\x0B" . chr(0xC2).chr(0xA0))
Даже никогда не заглядывал в доку trim, не знал что там есть какие-то опции. Проверил такой вариант, получилось грязно.
ID;"Company name";City/Brgy;Owner;Invoice;Receipt;"Deposit Slip";Status;Option;Actions
25;"CYBER ARTS AND PRINTS";"QUEZON CITY/Bagumbayan";"CYBER ARTS AND PRINTS";Invoice;"No receipt";"10-25-16 | 01:43";Active;Lifetime;"Renewal
Edit
View
Delete"
37;
Так что все-таки \s+ отрабатывает лучше всего. По крайней мере других решений я не встречал для этой задачи.
Ок, мержу
Released in v0.5.8
Need do some string cleanup. Remove >1 spaces and all new lines, trailing spaces. To avoid incorrect display in Excel/Calc columns after html code stripping.
OO Calc: http://dsro.ru/gyazo/images/046186fb43d10e6092e05b7fbfab.png MS Excel: http://dsro.ru/gyazo/images/c20a37008265555a18f7ccf55e99.png