<?php //преобразование $_POST['find'] в массив слов
$str =$_POST['find'];
$srt_arr = array();
$srt_arr1 =strtok($str, " ");
$srt_arr[] = $srt_arr1;
while($srt_arr1)
{
$srt_arr1 =strtok(" ");//очень тонкий момент: не нужно передавать какую именно строку мы разделяем - php уже в курсе
if ($srt_arr1) // не добавляем в массив пустые строки
{$srt_arr[] = $srt_arr1;}
};
print_r($srt_arr);//распечатываем результат
?>
Вариант 2 с использыванием explode (из Руководства по PHP)
Оба варианта корректны и достигают одного и того же результата - разделения входной строки $_POST['find'] на массив слов. Я предоставлю некоторые дополнительные комментарии и предложения.
Вариант 1: Использование strtok()
Код использует strtok() для разделения входной строки на отдельные слова, разделенные пробелами. Главное внимание стоит обратить на то, что strtok() модифицирует оригинальную строку, поэтому вам нужно передать пустую строку ("" или " ") как второй аргумент, чтобы сбросить позицию токена.
Цикл повторяется до тех пор, пока strtok() не вернет не пустую строку, что означает, что больше нет слов для разделения. Условие if ($srt_arr1) проверяет, является ли текущее слово не пустым перед добавлением его в массив.
Вариант 2: Использование explode()
Этот вариант использует explode() для разделения входной строки на массив слов, также разделенных пробелами. Разница в том, что explode() не модифицирует оригинальную строку и возвращает новый массив.
Примеры, предоставленные в руководстве PHP, демонстрируют использование explode() с различными разделителями (например, " " для пробелов или ":" для двоеточий).
Сравнение и предложения
Оба варианта работают, но есть некоторые соображения:
strtok() более гибок, потому что позволяет указать разделитель в виде строки. Однако он модифицирует оригинальную строку.
explode() проще использовать и не модифицирует оригинальную строку.
Если вам нужно разделить строку на массив слов с конкретным разделителем (например, запятыми или точками с запятой), то strtok() может быть более подходящим выбором. Если вы только хотите разделить строку на слова, разделенные пробелами, то explode() достаточен.
В плане эффективности оба функции имеют схожие характеристики.
Альтернативное решение
Если вы хотите сделать код более компактным и читаемым, можно использовать инициализацию массива с помощью цикла:
Эта APPROACH использует функцию explode() для разделения строки на массив слов и затем iterates over resulting array using a foreach loop. Условие if ($word !== '') проверяет, является ли текущее слово не пустым перед добавлением его в массив.
В целом, оба варианта корректны и достигают одного и того же результата. Выберите тот, который лучше подходит для вашей конкретной задачи и стиля программирования.
Преобразование строки в массив слов на PHP может выполняться с помощью функций strtok и explode, которые позволяют разделить строку на отдельные слова и элементы соответственно.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.