Ef% bb% bf,% c2% a0 -) що це за символи і як їх видалити з url stack overflow російською

Допоможіть будь ласка вирішити.

Перший зразок порожній рядок, як може бути результат var_dum = string (3) "".

Іншого пояснення як юнікод я не знаю.Походу ці (utf-8) невидимі символи і є.

Найпростіший варіант

Але наскільки правильно діяти таким чином я не впевнений

Якщо це так то треба врахувати що може бути цю прогалину під іншим кодуванням виглядає інакше і як можна очистити від нього рядок?

7-бітний ASCII?

Якщо ви раптом опинилися в 1963 році, і всього лише хочете використовувати друковані символи 7-бітного ASCII, то потрібно всього лише видалити всі символи в діапазоні кодів 0-31 і 127-255:

8-бітний розширений ASCII?

У 1963 вам не сподобалося і ви перемістилися в вісімдесяті та зіткнулися з 8-бітовим ASCII, в якому символи 128-255 є звичайними, відображеними, символами. Тоді вам потрібно лише злегка скорегувати рядок заміни і видаляти символи 0-31 і 127:

Ласкаво просимо в 21 століття! Якщо ваша рядок є рядком UTF-8, то вам доведеться використовувати модифікатор \ u:

Ви просто видаляєте символи 0-31 і 127. Дана конструкція буде працювати як для UTF-8, так і для 8-бітного ASCII, так як друге є підмножиною першого і вони обидві мають одні і ті ж діапазони керуючих символів. Відверто кажучи, така конструкція буде працювати і без / u. але він зробить ваше життя легше, якщо вам буде необхідно видаляти і будь-які інші символи.

Якщо ж ви маєте справу в Unicode, то в ньому дуже багато нецензурних символів. але давайте розглянемо один, самий часто вживаний: NO-BREAK SPACE (U + 00A0)

У рядку UTF-8, він може бути представлений як 0xC2A0. Відповідно вам буде необхідно шукати і видаляти цю послідовність символів, але, якщо ви використовували модифікатор / u. ви можете просто вказати \ xA0:

Бонус: а що якщо str_replace?

preg_replace вкрай ефективний, але якщо вам необхідно обробити велику кількість тексту, то більш продуктивним буде використовувати str_replace із зазначенням йому масиву символів:

Інтуїтивно здається, що даний підхід буде працювати сильно швидше, але давайте проведемо тести. Створимо набір тестових рядків різної довжини і змісту і перевіримо швидкість роботи (використовувався PHP 7.0.12):

Заміри проводилися для 10.000 ітерацій. Тут дуже цікаво подивитися на відносні відмінності. Для рядків довжиною до 512 символів зі значним відривом перемагає preg_replace. В діапазоні 1-8kb різниця нівелюється.

Цікавий результат, чи не так? Але в будь-якому випадку не варто цілком покладатися на мої тести, так як на ваших конкретних даних все може бути зовсім навпаки.