или в файле .htaccess
AddOutputFilter DEFLATE css js
ExpiresActive On
ExpiresByType application/x-javascript A2592000
Регулярное выражение не учитывает символы UTF-8 по умолчанию. Мета-символ \ s
учитывает только исходный латинский набор. Поэтому следующая команда удаляет только табуляции, пробелы, возврат каретки и новые строки
// http://stackoverflow.com/a/1279798/54964 $ str = preg_replace ('/ \ s + / ',' ', $ str);
Когда UTF-8 становится основным, это выражение будет чаще останавливаться / останавливаться, когда оно достигает новых символов utf-8, оставляя за ним пробелы \ s
не может учитываться.
Чтобы справиться с новыми типами белых пространств, введенных в unicode / utf-8, требуется более обширная строка для сопоставления и удаления современного пробела.
Потому что регулярные выражения по умолчанию не распознают многобайтовые символы, для их идентификации может использоваться только разделительная мета-строка, чтобы исключить, чтобы сегменты байтов изменялись в других символах utf-8 ( \ x80
в quad set может заменить все байты \ x80
в умных кавычках)
$ cleanedstr = preg_replace ("/ (\ t | \n | \ v | \ f | \r | | \ xC2 \ x85 | \ xc2 \ xa0 | \ xe1 \ xa0 \ x8e | \ xe2 \ x80 [\ x80- \ x8D] | \ xe2 \ x80 \ xa8 | \ xe2 \ x80 \ xa9 | \ xe2 \ x80 \ xaF | \ xe2 \ x81 \ x9f | \ xe2 \ x81 \ xa0 | \ xe3 \ x80 \ x80 | \ xef \ xbb \ xbf) + / "," _ ", $ str);
Здесь учитываются и удаляются вкладки, новые строки, вертикальные вкладки, формы, возврат каретки, пробелы и дополнительно из здесь :
nextline, неразрывные пробелы, разделитель монгольских гласных, [en quad, em quad, en space, em space, пространство три на em, пространство с четырьмя пробелами, пространство с шестью на em, пространство цифр, пространство препинания, тонкое пространство, пространство для волос, пространство с нулевой шириной, нулевой ширины, стопор для нулевой ширины, разделитель нулевой ширины], разделитель строк, разделитель абзацев, узкое пространство без разрыва, среднее математическое пространство, столярный столик, идеографическое пространство и нулевая ширина неразрывное пространство.
Многие из этих хакеров в файлах xml при экспорте из автоматизированных инструментов или сайтов, которые вытесняют текстовый поиск, распознавание и могут быть незаметно вставлены в исходный код PHP, что заставляет парсер перейти к следующей команде (разделители абзацев и строк), которые приводят к пропуску строк кода, что приводит к прерывистым необъяснимым ошибкам, которые мы начали называть «текстологическими заболеваниями»
[ не безопасно копировать и вставлять из Интернета. Используйте защитный код для защиты вашего кода. лол]
Вы можете сделать это, используя ereg_replace
$ str = «Это новый метод когда-либо»; $ newstr = ereg_replace ([[: space:]]) + ',' ', trim ($ str)): echo $ newstr // Результат - ThisIsNewMethodEver
Если вы хотите удалить все пробелы везде из $ tags, почему бы не просто:
str_replace ('', '', $ tags);
Если вы хотите удалить новые строки и такие, что потребуется немного больше ...
Чтобы удалить любое пустое , вы можете использовать регулярное выражение
$ str = preg_replace ('/ \ s + /', '', $ str);
См. также этот ответ для чего-то, что может обрабатывать пробелы в строках UTF-8.
Старая запись, но может быть выполнена следующим образом:
if (! function_exists ('strim')): function strim ($ str, $ charlist = "", $ option = 0 ) {$ return = ''; if (is_string ($ str)) {// Переводить HTML-объекты $ return = str_replace ("& amp; nbsp;", "", $ str); $ return = strtr ($ return, array_flip (get_html_translation_table (HTML_ENTITIES, ENT_QUOTES))); // Выберите триммер опций ($ option) {// Сбрасываем пробелы (и другие символы) из начала и конца строки по умолчанию: case 0: $ return = trim ($ return, $ charlist); ломать; // Сбрасываем пробелы (и другие символы) с начала строки case 1: $ return = ltrim ($ return, $ charlist); ломать; // Сбрасываем пробелы (и другие символы) из конца строки 2: $ return = rtrim ($ return, $ charlist); ломать; }} return $ return; } endif;
Стандартные функции trim () могут быть проблематичными, когда появляются объекты HTML. Вот почему я написал функцию «Super Trim», которая используется для решения этой проблемы, а также вы можете выбрать обрезку со стороны начала, конца или стенда строки.
Вы можете использовать функцию trim из php, чтобы обрезать обе стороны (влево и вправо)
trim ($ yourinputdata, "");
Или
trim ($ yourinputdata);
Вы также можете использовать
ltrim () - удаляет пробелы или другие предопределенные символы с левой стороны строки rtrim () - удаляет пробелы или другие предопределенные символы с правой стороны строки
Система: PHP 4,5,7 Документы: http://php.net/manual/en/function.trim.php
Любая возможная опция заключается в использовании специальной файловой оболочки для имитации переменных в виде файлов. Вы можете добиться этого, используя это:
1) Прежде всего, зарегистрируйте свою обертку (только один раз в файле, используйте ее как session_start ()):
stream_wrapper_register ( 'var', VarWrapper);
2) Затем определите свой класс-оболочку (он очень быстро написан, не совсем корректен, но он работает):
класс VarWrapper {protected $ pos = 0; защищенный $ content; public function stream_open ($ path, $ mode, $ options, & amp; $ open_path) {$ varname = substr ($ path, 6); глобальное $$ varname; $ this- & gt; content = $$ varname; return true; } public function stream_read ($ count) {$ s = substr ($ this- & gt; content, $ this- & gt; pos, $ count); $ this- & gt; pos + = $ count; return $ s; } public function stream_stat () {$ f = fopen (__ file__, 'rb'); $ a = fstat ($ f); fclose ($ е); if (isset ($ a [7])) $ a [7] = strlen ($ this- & gt; content); return $ a; }}
3) Затем используйте любую функцию файла с вашей оболочкой в протоколе var: // (вы можете использовать ее для include, require и т. д.):
глобальный $ __ myVar; $ __ myVar = 'Введите теги здесь'; $ data = php_strip_whitespace ('var: // __ myVar');
Примечание. Не забудьте указать переменную в глобальной области (например, глобальный $ __ myVar)
вы также используете функцию preg_replace_callback
. и эта функция идентична его сиблингу preg_replace
, за исключением того, что она может принимать функцию обратного вызова, которая дает вам больше контроля над тем, как вы управляете своим выходом.
$ str = " это строка "; echo preg_replace_callback ('/ \ s + /', function ($ matches) {return "";}, $ str);
preg_replace
?
– Léo Léopold Hertz 준영
15 December 2017 в 08:23
Иногда вам нужно удалить последовательные пробелы. Вы можете сделать это следующим образом:
$ str = «Мое имя»; $ str = preg_replace ('/ \ s \ s + /', '', $ str);
Выход:
Меня зовут
$ string = str_replace ("", "", $ string);
Я считаю, что preg_replace будет искать что-то вроде [: space:]
u
в регулярном выражении? – Soaku 19 August 2017 в 16:51