Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

Почистить строку от лишних пробельных символов

#php


Есть строка:

"St Petersburg       \r\n      Moscow    \r\n"


Её нужно преобразовать в:

"St Petersburg|Moscow"


Прошу подсказать наиболее красивый и короткий код для этого.
Придумал такое решение:

$str = implode("|", array_map("trim", explode("\r", trim($text)))) 


Он очень ужасен, прошу вашей помощи.
    


Ответы

Ответ 1



Есть же preg_replace: $text = "St Petersburg \r\n Moscow \r\n"; echo trim(preg_replace("/\s+\r+\s+(?!$)/m", "|", $text)); Эта функция заменяет все совпадения с шаблоном на строку для замены, которая идёт вторым параметром. Для более подробного изучения функции посмотрите документацию на php.net.

Ответ 2



Сравнил два варианта (автор и @YuryPlinto): preg_replace time: '.($t2-$t1); Оказалось, что регулярное выражение вдвое быстрее, что не удивительно. Удивительно, что всего вдвое. explode-implode time: 0.32872295379639 preg_replace time: 0.15778708457947

Ответ 3



Можно заменить explode на preg_split $text = "St Petersburg \r\n Moscow \r\n"; $str = implode('|', preg_split('/\s*\r\s*/', trim($text))); var_dump($str); // string(20) "St Petersburg|Moscow"

Комментариев нет:

Отправить комментарий