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

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

tr -d " " ""

Я неудачно запускаю функциюphp_strip_whitespace от

$tags_trimmed = php_strip_whitespace($tags);

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

$tags_trimmed = preg_replace(" ", "", $tags);
 T.Todua25 мар. 2014 г., 01:37
 ppostma114 окт. 2016 г., 19:04
конечно! У меня есть набор кода, который обращается к нему
 Léo Léopold Hertz 준영25 мар. 2014 г., 20:02
@taztodgmail Посмотрите на даты. Это 2009 год, а другой - 2013 год. Это дубликат 2013 года.
 ppostma114 окт. 2016 г., 17:38
К вашему сведению: флаг \ s не включает символы utf-8, такие как nbsp ;, ps, quads и fs в кодировке utf-8;stackoverflow.com/questions/2227921/…

Ответы на вопрос(11)

Решение Вопроса

\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, non-breaking spaces, mongolian vowel separator, [en quad, em quad, en space, em space, three-per-em space, four-per-em space, six-per-em space, figure space, punctuation space, thin space, hair space, zero width space, zero width non-joiner, zero width joiner], line separator, paragraph separator, narrow no-break space, medium mathematical space, word joiner, ideographical space, and the zero width non-breaking space.

Многие из них приводят к хаосу в XML-файлах при экспорте из автоматических инструментов или сайтов, которые мешают текстовому поиску, распознаванию и могут незаметно вставляться в исходный код PHP, что заставляет анализаторjump to next command (разделитель абзацев и строк), который приводит к пропуску строк кода, что приводит к периодическим, необъяснимым ошибкам, которые мы начали называть «заболеваниями, передаваемыми текстовым путем»;

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

 14 окт. 2016 г., 23:26
Как это? Я пытался объяснить, что старый не работает так, как должен
 19 авг. 2017 г., 18:51
Не должно бытьu флаг в регулярном выражении?
 23 мар. 2017 г., 16:34
Спасибо,BUT using trim() should be the right answer
 Léo Léopold Hertz 준영14 окт. 2016 г., 23:40
Отлично! Можете ли вы включить количество символов в вашем наборе? - - Это поможет нам определить, что у вас действительно есть полный набор этих персонажей. - Я принял ваш ответ, потому что теперь он более полный, чем старый принятый ответ.
 18 окт. 2016 г., 16:43
Спасибо за помощь @Masi!

лать это так:

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

Выход:

My name is
 12 февр. 2015 г., 12:57
Благодарю. Именно то, что я искал
 22 авг. 2016 г., 09:44
да ... его работа отлично .. :)

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». Функция, которая используется для решения этой проблемы, а также вы можете выбрать обрезку со стороны начала, конца или стенда строки.

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

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

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

 27 дек. 2012 г., 19:36
+1 Это идеально, именно то, что мне было нужно. Благодарю.
 28 февр. 2013 г., 13:06
Любые другие решения. Это (preg_replace) не для меня.
 13 мая 2014 г., 16:12
Похоже, вы пытаетесь решить проблему, отличную от ОП. Это решение для удаления всех пробелов из строки.
 19 июл. 2013 г., 10:29
Это на порядок быстрее, чем их замена по одному, вот почему :)
 14 авг. 2009 г., 21:41
+1, потому что это удаляет все пробелы, а не только пробелы.

азнесения и распечатать всю строку, используя цикл for.

 $text = $_POST['string'];
            $a=explode(" ", $text);
            $count=count($a);
            for($i=0;$i<$count; $i++){

                echo $a[$i];
            }

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

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)

 24 сент. 2013 г., 16:19
Да, я знаю, что это очень сложно, но это работает, а в некоторых случаях это действительно мощно. И, к сожалению, это единственный способ (вместо создания временных файлов, что некрасиво), как отправлять переменную в функции, которые работают только с файлами (и php_strip_whitespace не единственный). Например, вы можете заменить код до того, как потребуется - вы можете создать собственный & quot; прекомпилятор & quot; для PHP, где вы можете делать все, что вы хотите. Я использую его, и он становится очень мощным и полезным за годы программирования.
 18 сент. 2013 г., 07:50
Это сложно, новички могут не захотеть взглянуть на это. Но для того, чтобы проявить усилия, я добавлю вам голосов, так что -1 в этом посте будет удален

чтобы обрезать обе стороны (левую и правую)

 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
Docs:http://php.net/manual/en/function.trim.php

 11 февр. 2017 г., 15:04
Это должен быть правильный ответ, как и изначально, именно то, что спрашивает ОП. Он маленький, чистый и "расширяемый" добавив дополнительный символ для обрезки.
 19 авг. 2017 г., 18:53
Trim не удаляет пробелы ВНУТРИ строки, только слева и справа. Кстати, пробел по умолчанию в обрезке, вам не нужно давать второй аргумент
$string = str_replace(" ", "", $string);

[:space:]

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

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

 14 авг. 2009 г., 21:43
если вы не назначите результат переменной, это на самом деле ничего полезного не даст.
 21 мар. 2015 г., 14:33
Пол Диксон, что переменная? Я программирую, но не знаю, что такое переменная ... Для чего она нужна? Могу ли я найти это в Интернете? Важно знать, что это значит? Почему они ставят $ перед именем?

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

$str = "this is a   string";

echo preg_replace_callback(
        '/\s+/',
        function ($matches) {
            return "";
        },
        $str
      );
 15 дек. 2017 г., 00:26
Хорошей практикой в отношении переполнения стека является добавление объяснения того, почему ваше решение должно работать. Для получения дополнительной информации читайтеHow To Answer.
 Léo Léopold Hertz 준영15 дек. 2017 г., 08:23
Можете ли вы добавить примеры, в каких случаях обратный вызов полезен сpreg_replace?

ereg_replace

 $str = 'This Is New Method Ever';
 $newstr = ereg_replace([[:space:]])+', '',  trim($str)):
 echo $newstr
 // Result - ThisIsNewMethodEver
 19 авг. 2017 г., 18:54
Ereg устарел с PHP 5.3

Ваш ответ на вопрос