Не удается удалить лишние пробелы в строке, полученной из Интернета в php

0

Я пытаюсь удалить лишние пробелы строки, которую я получаю из Интернета, используя file_get_contents(). Я попробовал str_replace() иpreg_replace(), а также поиск, но ни один из них не работал.

Вот мой код:

<?php $html_content = file_get_contents("http://mindcity.sina.com.hk/MC-lunar/daily/2014/12/20141209_b5.html");

$html_content =  mb_convert_encoding($html_content, 'UTF-8', 'BIG-5');
$html_content = strip_tags($html_content); 

$start_pos = strrpos($html_content, "宜 :");
$end_pos = strrpos($html_content, "凶神宜忌 :") - strlen($html_content);
$good_to_do = substr($html_content, $start_pos, $end_pos);
echo $good_to_do .'<br>';
//remove whitespace of $good_to_do
$good_to_do = str_replace(' : ','*',$good_to_do);
$good_to_do = preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $good_to_do);
$good_to_do = str_replace(array("\r\n", "\r", "\n", "\t", "\0", "\s", "\x0B", "\x20", "\xA0"), '*', $good_to_do);
var_dump( $good_to_do ); ?>
  • 0
    $good_to_do - str_replace что минус - должен быть знаком равенства =
  • 0
    о, опечатка. Но сделать знак равенства все равно не удалит все пробелы
Теги:
str-replace
preg-replace
file-get-contents

2 ответа

0
Лучший ответ

Просто обнаружил, что белое пространство было &nbsp; при просмотре источника. Таким образом, код просто становится str_replace('&nbsp;', '', $html_content);

0

Делать

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

Я помещаю '*', потому что это то, что вы хотите заменить? Вы можете поместить там что угодно.

  • 0
    В этом случае не удаляются все пробелы
  • 0
    Попробуйте это foreach(preg_split('//',$var) as $char){ var_dump(ord($char)); } где $ var равно $ good_to_do после ТОЛЬКО применения приведенного выше регулярного выражения и последующего размещения вывода.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню