Вырезать пробелы внутри переменной в PHP

Как вы можете удалить пробелы в переменной PHP?

Я знаю этот комментарий PHP.net. Я хотел бы иметь аналогичный инструмент, такой как tr для PHP, чтобы я мог просто запускать

 tr -d " " "" 

Я безуспешно запускаю функцию php_strip_whitespace

 $tags_trimmed = php_strip_whitespace($tags); 

Я также выполняю функцию регулярного выражения

 $tags_trimmed = preg_replace(" ", "", $tags); 

Related of "Вырезать пробелы внутри переменной в PHP"

Регулярное выражение не учитывает символы 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 в четырехъядерном наборе может заменить все \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, что заставляет парсер перейти к следующей команде (разделители абзацев и строк), которая вызывает строки кода, который должен быть пропущен, что приводит к прерывистым, необъяснимым ошибкам, которые мы начали называть «текстовыми заболеваниями»,

[Его не безопасно копировать и вставлять из Интернета. Используйте защитный код для защиты вашего кода. лол]

Чтобы разрезать любые пробелы, вы можете использовать регулярное выражение

 $str=preg_replace('/\s+/', '', $str); 

См. Также этот ответ для чего-то, что может обрабатывать пробелы в строках UTF-8.

Иногда вам нужно удалить последовательные пробелы. Вы можете сделать это следующим образом:

 $str = "My name is"; $str = preg_replace('/\s\s+/', ' ', $str); 

Вывод:

 My name is 
 $string = str_replace(" ", "", $string); 

Я считаю, что preg_replace будет искать что-то вроде [:space:]

Вы можете использовать функцию trim из php, чтобы обрезать обе стороны (влево и вправо)

  trim($yourinputdata," "); 

Или

 trim($yourinputdata); 

Вы также можете использовать

 ltrim() - Removes whitespace or other predefined characters from the left side of a string rtrim() - Removes whitespace or other predefined characters from the right side of a string 

Система: PHP 4,5,7
Документы: http://php.net/manual/en/function.trim.php

Если вы хотите удалить все пробелы везде из $ tags, почему бы не просто:

 str_replace(' ', '', $tags); 

Если вы хотите удалить новые строки и такие, которые потребуют немного больше …

Любой возможный вариант – использовать специальную оболочку файла для моделирования переменных в виде файлов. Вы можете достичь этого, используя это:

1) Прежде всего, зарегистрируйте свою обертку (только один раз в файле, используйте ее как session_start ()):

 stream_wrapper_register('var', VarWrapper); 

2) Затем определите свой класс-оболочку (он действительно написан быстро, не совсем корректно, но он работает):

 class VarWrapper { protected $pos = 0; protected $content; public function stream_open($path, $mode, $options, &$opened_path) { $varname = substr($path, 6); global $$varname; $this->content = $$varname; return true; } public function stream_read($count) { $s = substr($this->content, $this->pos, $count); $this->pos += $count; return $s; } public function stream_stat() { $f = fopen(__file__, 'rb'); $a = fstat($f); fclose($f); if (isset($a[7])) $a[7] = strlen($this->content); return $a; } } 

3) Затем используйте любую функцию файла с вашей оболочкой в ​​протоколе var: // (вы можете использовать ее для include, require и т. Д.):

 global $__myVar; $__myVar = 'Enter tags here'; $data = php_strip_whitespace('var://__myVar'); 

Примечание. Не забудьте указать переменную в глобальной области (например, глобальный $ __ myVar)

Вы можете сделать это, используя ereg_replace

  $str = 'This Is New Method Ever'; $newstr = ereg_replace([[:space:]])+', '', trim($str)): echo $newstr // Result - ThisIsNewMethodEver 

Иногда вам нужно удалить последовательные пробелы. Вы можете сделать это следующим образом:

 $str = "My name is faisal"; $str = preg_replace('/\s\s+/', ' ', $str); 

Вывод:

 My name is faisal 

NB: str_replace лучше, чем preg_replace, если вы действительно просто хотите удалить символ пробела. Причиной использования preg_replace было бы удаление всех пробелов (включая вкладки, новые строки и т. Д.),

вы также используете функцию preg_replace_callback . и эта функция идентична preg_replace за исключением того, что она может принимать функцию обратного вызова, которая дает вам больше контроля над тем, как вы управляете своим результатом.

 $str = "this is a string"; echo preg_replace_callback( '/\s+/', function ($matches) { return ""; }, $str );