- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Ребята, очень надеюсь на Вашу помощь!
У меня есть вот такая многострочная переменная:
Отступы вокруг названий доменов - это пробелы и табуляции и (возможно) другие символы, которые обычно убираются функцией trim (если бы она умела удалять их в каждой строке текста, а не только по его краям).
Из этой переменной требуется получить простой массив доменов без пустых значений и только с уникальными элементами:
Существует ли элегантный способ это сделать? Цель - оптимизация кода (по возможности без использования регулярных выражений).
Как бы Вы реализовали данный алгоритм? Возможно, мне неизвестно о каких-нибудь специфических функциях в PHP.
Заранее большое спасибо за любые примеры!
можно еще explode (PHP_EOL,$modSettings[white_list']);
правда тут есть один фокус. конец строки в разных системах определяются разными кодами 1 или 2 байтами. т.е. если данные в массив получаются с другой платформы, то будут ошибки разбора. как вариант устранения preg_split("/\\r\\n|\\r|\\n/", $modSettings[white_list']);
webjey, большое Вам спасибо! Воспользовалась Вашим вариантом, он подошёл просто идеально! Правда, там есть один нюанс: функция str_word_count() умеет работать с третьим аргументом только при версии PHP 5.1.0 и выше.
Также Ваш код на одном и том же наборе данных выполняется примерно в 3 раза быстрее, чем предложенный в первом комментарии:
silicoid, Ваш пример, к сожалению, мне не удалось запустить, поэтому ничего не могу о нём сказать.
Ваш пример, к сожалению, мне не удалось запустить
прошу прощения, что не получилось запустить?
Вот зря там добавили в шаблон модификатор U (PCRE_UNGREEDY).
Это делает квантификатор не жадным и в результатах будет куча пустых строк, на удаление которых тратится дополнительное время.
В данном случае модификатор U лучше убрать.
прошу прощения, что не получилось запустить?
silicoid, извините меня, была моя ошибка...
Ваш код запустить получилось, но он всё равно выполняется слишком долго и к тому же оставляет пустые элементы в массиве. Вот смотрите:
Результат тестирования времени выполнения:
Вариант предложенный webjey работает правильно и быстрее всего.
Благодаря описанным выше примерам, у меня получилось увеличить скорость нужного мне участка кода в 8 раз!
В эпоху PHP7, Да... это проблема...
LEOnidUKG, у меня SMF 2.0.13 (и полсотни установленных модификаций), он не работает на PHP 7. Если выполнить обновление, там столько проблем возникнет, что проще будет повеситься...
LEOnidUKG, у меня SMF 2.0.13 (и полсотни установленных модификаций), он не работает на PHP 7. Если выполнить обновление, там столько проблем возникнет, что проще будет повеситься...
А у вас какой PHP стоит? 5.0? или PHP 4?