Чтобы удалить пробелы внутри переменной в PHP
как вы можете удалить пробелы в переменной PHP?
Я знаю комментарий PHP.net.
Я хотел бы иметь подобный инструмент, как tr для PHP такой, что я могу запустить просто
tr -d " " ""
я запускаю неудачно функцию php_strip_whitespace by
$tags_trimmed = php_strip_whitespace($tags);
я запускаю функцию regex также неудачно
$tags_trimmed = preg_replace(" ", "", $tags);
10 ответов:
регулярное выражение по умолчанию не учитывает символы 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 );это учитывает и удаляет вкладки, новые строки, вертикальные вкладки, formfeeds, возврат каретки, пробелы и дополнительно от здесь:
строки, неразрывный пробел, монгольский гласные сепаратора, [Ан квад, квад ЭМ, ванной пространства, их место, три-за-ет место, четыре-за их места, шесть-на их пространство, рисунок космос, знаки препинания пространства, тонкие места, волосы пространство нулевой ширины пространства, нулевой ширины не столяр, нулевой ширины столяр], разделительную линию, пункт разделитель, узкий неразрывный пробел, среднего математического пространства, слово столяр, идеографическое пространство и неразрывное пространство нулевой ширины.
многие из них сеют хаос в xml-файлах при экспорте из автоматизированных инструментов или сайтов, которые нарушают поиск текста, распознавание и могут быть незаметно вставлены в исходный код PHP, что приводит к синтаксическому анализатору перейти к следующей команде (разделители абзацев и строк), что приводит к пропуску строк кода, что приводит к прерывистым, необъяснимым ошибкам, которые мы начали называть "текстуально передающиеся болезни"
[его не безопасно копировать и вставлять из интернета больше. Используйте сканер символов для защиты кода. lol]
на полосу любой пробелы, вы можете использовать регулярное выражение
$str=preg_replace('/\s+/', '', $str);см. также ответ для чего-то, что может обрабатывать пробелы в строках UTF-8.
иногда вам нужно будет удалить последовательные пробелы. Вы можете сделать это так:
$str = "My name is"; $str = preg_replace('/\s\s+/', ' ', $str);выход:
My name is
вы можете использовать функцию обрезки с 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:// (вы можете использовать его для включения, требовать и т. д. тоже):
global $__myVar; $__myVar = 'Enter tags here'; $data = php_strip_whitespace('var://__myVar');Примечание: не забудьте иметь переменную в глобальной области (например, global $_ _ myVar)
Вы можете сделать это с помощью
ereg_replace$str = 'This Is New Method Ever'; $newstr = ereg_replace([[:space:]])+', '', trim($str)): echo $newstr // Result - ThisIsNewMethodEver
старый пост, но можно сделать так:
if(!function_exists('strim')) : function strim($str,$charlist=" ",$option=0){ $return=''; if(is_string($str)) { // Translate HTML entities $return = str_replace(" "," ",$str); $return = strtr($return, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); // Choose trim option switch($option) { // Strip whitespace (and other characters) from the begin and end of string default: case 0: $return = trim($return,$charlist); break; // Strip whitespace (and other characters) from the begin of string case 1: $return = ltrim($return,$charlist); break; // Strip whitespace (and other characters) from the end of string case 2: $return = rtrim($return,$charlist); break; } } return $return; } endif;стандартные функции trim () могут быть проблематичными, когда приходят HTML-объекты. Вот почему я написал функцию "Super Trim", которая используется для обработки этой проблемы, а также вы можете выбрать обрезку с начала, конца или стороны стенда строки.
Comments