Как я могу определить, какие пробелы в строке?
Я очищаю некоторую информацию с 10-летнего веб-сайта, который был построен в ASP с использованием Frontpage (изначально) и Dreamweaver (в последнее время). Я использую PHP.
Я возвращаю строки с пробелами, которые не являются пробелами. Используя функцию обрезки PHP, некоторые пробелы удаляются, но не все.
original string: string(47) " School Calendar"
trimmed string: string(34) " School Calendar"
Как я могу определить, что такое пробелы, чтобы я мог их удалить?
Моя страница, показывающая var_dumps исходной и обрезанной строки, здесь.
Ответы
Ответ 1
Похоже, что (если вы просматриваете источник на своей странице), что у вас есть строка
"пробелы", которые не обрезаются функцией исправления PHP.
Лучшим вариантом, вероятно, является их замена заранее, вызывая str_replace перед обрезкой:
$stringToTrim = str_replace(" "," ", $original);
$trimmed = trim($stringToTrim);
(Не используется стандартное форматирование кода, потому что оно неправильно обрабатывает
)
Ответ 2
echo ord($trimmed_string)
расскажет вам, что такое код символа пробела в этом примере. (Он дает код символа первого символа.)
Ответ 3
Юникод имеет множество "разных" пространств:
http://en.wikipedia.org/wiki/Space_%28punctuation%29#Table_of_spaces
http://www.brunildo.org/test/space-chars.html
Trim не знает о них всех. Вы должны использовать регулярное выражение, чтобы избавиться от них, если вам нужно.