Ответ 1
$str = "1 $nbsp; 2 3 4";
$new_str = str_replace(" ", '', $str);
У меня есть такое предложение.
1 2 3 4
Как видите, между 1, 2 и 3 текстом есть лишние пробелы. Я хочу вывод только с одним пробелом между ними. поэтому мой вывод будет 1 2 3 4
.
Если я использую тримминг, он может удалить только пробелы, но не это
Как я могу использовать функцию обрезки PHP, чтобы получить вывод, как это?
$str = "1 $nbsp; 2 3 4";
$new_str = str_replace(" ", '', $str);
Нашел это на php.net, прекрасно работает:
$myHTML = " abc";
$converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));
trim($converted, chr(0xC2).chr(0xA0));
Более инклюзивный ответ для тех, кто хочет просто сделать обрезку:
$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
$str = " abc ";
echo trim($str, "\xC2\xA0"); //abc
если ваша строка имеет " ",
$str="1 2 3 4";
$s = str_replace(" ","",$str);
print $s;
echo str_replace ( " ", "", "1 2 3 4" );
просто помните, что вам нужно отобразить результат str_replace, и вам не нужно беспокоиться о белых пространствах, браузер будет показывать только одно пробел.
Немного поздно ответить, но, надеюсь, может помочь кому-то другому. Наиболее важным при извлечении контента из 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