#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"
Комментариев нет:
Отправить комментарий