php Удалить неразрывный пробел - non breaking space
Primary tabs
Проблема
Предположим что в некоторой html форме возникают т.н. "неразрывные" пробелы (ну и вообще пусты символы которые вроде и не табы, но обычном trim-ом их не уберёшь) -
пусть мы получили содержимое формы с строку $phrase, тогда удалить эти пробелы можно таким способом:
Решение
используем когд вроде:
$phrase = strtr($phrase, array_flip( get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, "UTF-8") ) ); $phrase = trim($phrase,chr(0xC2).chr(0xA0)); // удаляем "неразрывные пробелы"
вообще это мутная тема (особенно если вы не разбираетесь с кодировании символов ) - всё зависит от кодировки. надо разбираться. просто так использовать chr(160) - иначе в UTF-8 можно поудалять то, что не собирались) -
но можете изучить вот этот пример с сайта php.net:
// turn some HTML with non-breaking spaces into a "normal" string $myHTML = " abc"; $converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); // this WILL NOT work as expected // $converted will still appear as " abc" in view source // (but not in od -x) $converted = trim($converted); // are translated to 0xA0, so use: $converted = trim($converted, "\xA0"); // <- THIS DOES NOT WORK // EDITED>> // UTF encodes it as chr(0xC2).chr(0xA0) $converted = trim($converted,chr(0xC2).chr(0xA0)); // should work // PS: Thanks to John for saving my sanity!
- Log in to post comments
- 8540 reads