Обрезать с помощью PHP - PullRequest
22 голосов
/ 26 марта 2010

У меня есть такое предложение.

1       2     3   4

Как видите, между 1, 2 и 3 текстом есть лишние пробелы. Я хочу вывод только с одним пробелом между ними. поэтому мой вывод будет 1 2 3 4.

Если я использую обрезку, он может удалить только пробелы, но не это   Как я могу использовать функцию обрезки PHP, чтобы получить вывод, подобный этому?

Ответы [ 7 ]

60 голосов
/ 04 октября 2012

Нашел это на php.net, прекрасно работает:

$myHTML = " abc"; 
$converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); 
trim($converted, chr(0xC2).chr(0xA0));

Источник: http://php.net/manual/en/function.trim.php#98812

23 голосов
/ 26 марта 2010
$str = "1 $nbsp;     2     3   4";
$new_str = str_replace(" ", '', $str);
19 голосов
/ 16 января 2015

Более содержательный ответ для тех, кто хочет просто сделать обрезку:

$str = trim($str, " \t\n\r\0\x0B\xC2\xA0");

Одинаковые элементы обработки HTML:

$str = trim(html_entity_decode($str), " \t\n\r\0\x0B\xC2\xA0");

Это взаимодействие html_entity_decode и усечения описано в документации по PHP здесь: http://php.net/manual/en/function.html-entity-decode.php#refsect1-function.html-entity-decode-notes

10 голосов
/ 28 апреля 2015
$str = " abc ";

echo trim($str, "\xC2\xA0"); //abc
1 голос
/ 29 июня 2016

Немного поздно, чтобы ответить, но, надеюсь, может помочь кому-то еще. Наиболее важным при извлечении контента из html является использование utf8_decode () в php. Тогда все другие строковые операции станут легким делом. Даже иностранные символы могут быть заменены путем прямого копирования вставляемых символов из браузера в код php. Следующая функция заменяет   пробелом. Затем все лишние пробелы заменяются одним пробелом, используя preg_replace(). Ведущие и конечные пробелы удаляются в конце.

function clean($str)
{       
    $str = utf8_decode($str);
    $str = str_replace(" ", " ", $str);
    $str = preg_replace('/\s+/', ' ',$str);
    $str = trim($str);
    return $str;
}

$html = "1 $nbsp;     2     3   4";
$output = clean($html);
echo $output;

1 2 3 4

1 голос
/ 26 марта 2010
echo str_replace ( " ", "", "1       2     3   4" );

просто помните, что вам нужно отобразить результат str_replace, и вам не нужно беспокоиться о пробелах, браузер покажет только один пробел.

1 голос
/ 26 марта 2010

, если ваша строка действительно имеет "",

$str="1       2     3   4";
$s = str_replace("  ","",$str);
print $s;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...