PHP обрізати пробіли по краях. Як з рядків забрати прогалини на PHP? Приклад пошуку та заміни пробілів

Працюючи із текстом, часто доводиться його форматувати. Це необхідно для коректного виведення на екран і легко читання. Це потрібно, якщо користувач вписує деяку інформацію і припускається помилок: замість одного пропуску вказує два, на початку ставить табуляцію. Є кілька способів забрати прогалини в PHP.

Trim()

Функція Trim шукає зайві знаки на початку рядка чи наприкінці. Це:

  • звичайний пробіл;
  • табуляція;
  • символ перенесення рядка.

Записується у такому вигляді:

String trim (string $str [, string $character_mask = "\t\n\r\0\x0B" ])

$str - це рядок, що обробляється, а $character_mask - зайві символи. $character_mask є необов'язковим атрибутом.

Preg_replace

Функція пошуку та заміни символів за регулярним виразом.

Mixed preg_replace (mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]])

  1. $ pattern - шуканий шаблон.
  2. $replacement – ​​символи для заміни.
  3. $subject - об'єкт, що обробляється.
  4. $limit - кількість замін, що виконуються.

$pattern та $replacement можуть бути масивами. У такому разі заміна провадиться відповідно до індексів.

Str_replace()

Забрати прогалини з рядка в PHP можна шляхом str_replace(). Він замінює всі входження рядка пошуку на рядок заміни.

Mixed str_replace (mixed $search , mixed $replace , mixed $subject [, int &$count ])

Використовується як спрощений метод preg_replace().

  1. $search - значення, яке потрібно знайти.
  2. $replace - рядок, що замінюється.
  3. $subject - об'єкт, в якому проводиться пошук та заміна.
  4. $count встановлює кількість замін.
$bodytag = str_replace("%body%", "black", " "); // надає: Hll Wrld f PHP $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O" "," U"); , vegetables, and fiber every day."; $healthy = array("fruits", "vegetables", "fiber"); $yummy = array("pizza", "beer", "ice cream"); str_replace($healthy, $yummy, $phrase); // надає: 2 $str = str_replace("ll", "", "good golly miss molly!", $count); echo $count; ?>

Приклад пошуку та заміни пробілів

Ці функції застосовують у більшості ситуацій, навіть у складніших.

Наприклад, користувач ввів деякі дані, які пізніше будуть надруковані на екрані. Для поліпшення читабельності і сприйняття тексту в цілому цю інформацію потрібно обробити - прибрати прогалини, що повторюються, замінити їх на одинарні.

$text1 = "Довгий об'ємний текст із зайвими пробілами";

В даному випадку видно, що між словами знаходиться по два і три пробіли. Порядок дій, як усунути прогалини в PHP, наступний.

1. Для початку потрібно перетворити рядок на масив рядків за допомогою функції.

Explode(“ ”, $text1)

Як роздільник використовується один пробіл. Таким чином, частини тіла, які не є окремими елементами масиву, міститимуть на один пропуск менше.

2. В результаті виходить такий масив рядків:

$array = ["Довгий ", "об'ємний", "текст", "з ", "зайві пробілами"]]

3. Кожен елемент обробляється функцією:

Preg_replace("/\s+/", " ", $text1)

Для пошуку однієї та більшої кількості прогалин використовується регулярне вираження /\s+/. Усі знайдені збіги замінюються рядком ' '. Пошук здійснюється у змінній $text1.

4. В результаті отримуємо рядок з правильною кількістю прогалин, який легко сприймається користувачем.

Доброго вечора, нещодавно ми з Вами трохи торкалися теми паролів, та їх безпечного зберігання, а саме вивчали функцію хешування. Сьогодні ми трохи продовжимо тему, пов'язану з паролями, їх зберіганням, і вивчимо функції, за допомогою яких можна видаляти пробіли з початку та кінця рядка. Причому тут паролі та видалення прогалин з рядка, Скажіть Ви? По-перше, дана функція, звичайно ж, не відноситься безпосередньо до паролів, а лише працює з рядками, а про паролі я сказав, лише як її застосування. Тому Ви можете її використовувати будь-де, і коли Вам завгодно, виходячи з вашої ситуації.

Для чого потрібно обрізати пробіли на початку рядка та наприкінці? Якщо Ви вказуєте пароль на сайті при реєстрації і якимось чином випадково натиснете прогалину і не помітите цього, то пароль буде складатися, наприклад не з чотирьох символів, а з п'яти, включаючи вашу прогалину. І ви не розумітимете, чому пароль не підходить, адже хеш цього рядка відрізнятиметься. Тому я завжди рекомендую обрізати пробіли в рядку, щоб не виникало таких нюансів. Тепер ми з Вами перейдемо до розгляду прикладу на практиці.

$string_pass = " 1234 " ;
$password = md5(trim($string_pass ));
$password2 = md5($string_pass );
echo $password;
echo "
"
;
echo $password2;
?>

Створюємо змінну, яка буде нашим паролем, і спеціально вказуємо пробіл на початку і в кінці рядка. Далі створюємо змінну, в якій вже зберігатиметься хешований пароль, і пропускаємо рядок через функцію trim, яка спочатку видалить усі непотрібні прогалини, і лише потім ми отримаємо пароль хешування. А в другій змінній ми не використовуємо функцію видалення прогалин і відразу хешуємо рядок. Після чого ми виводимо два результати на екран браузера і бачимо, що вони повністю відрізняються, хоча обидва рази використовували однаковий рядок. Однак через прогалини результат повністю відрізняється, тому з цією справою потрібно бути дуже уважним. І останнє, що варто Вам розповісти. Існують ще дві функції, які видаляють прогалини на початку рядка, або в кінці рядка, і називаються вони ltrimі rtrimвідповідно. Тому якщо Вам необхідно видалити прогалини з будь-якої сторони, використовуйте їх. А на цьому я завершую цю статтю та бажаю Вам успіхів у всіх ваших роботах.

У будь-якій мові при роботі з рядками є типовим завдання видалення прогалин як на початку, так і в кінці рядка. У PHP цих цілей існує три функції: ltrim(), rtrim(), trim(). Функція ltrim() видаляє пропуски на початку рядка, rtrim() - наприкінці рядка, trim() - як на початку, так і наприкінці. Що цікаво: ці функції, крім пробілів, видаляють також послідовності переходу, що управляють, на новий рядок, повернення каретки, табуляції і нуль-символу.

$example = "\tHi everybody\n"; var_dump(trim($example)); var_dump(rtrim($example)); var_dump(ltrim($example));

В результаті ми отримаємо:

String "Hi everybody" (length=12) string "Hi everybody" (length=14) string "Hi everybody" (length=13)

Що найцікавіше, вищеописані функції можуть видаляти символи, задані користувачем. Для цього вищеописаним функціям потрібно передати другим аргументом рядок, що містить символи, що видаляються. Наприклад:

$example = "yHi everybody\n"; var_dump(trim($example, "y")); var_dump(rtrim($example, "y\n")); var_dump(ltrim($example, "yH"));

В результаті:

String "Hi everybody" (length=13) string "yHi everybod" (length=13) string "i everybody" (length=12)