Невозможно удалить пробел в открытом тексте с использованием simplehtmldom

0

Я использую simplehtmldom, чтобы получить некоторые данные веб-сайта с этим

$data = array();
$html = file_get_html('http://www.example.com/'.$value, false, $context);
foreach($details as $value){

   $dataele = array();

    foreach($html->find('*[class=style11]') as $element){

      $houseinfo = trim($element->plaintext, " \t\n\r\0\x0B\xC2\xA0");
      echo $houseinfo;
      echo '<br>';
      array_push($dataele, $houseinfo);

    }   
}

но я обнаружил, что есть некоторые &nbsp; когда я вставляю эти данные в базу данных. Я пробовал разные методы, но он не может действительно удалить &nbsp; html-тег. Методы, которые я пробовал:

$houseinfo = trim($element->plaintext, " \t\n\r\0\x0B\xC2\xA0");
$dataele[1] = html_entity_decode($dataele[1]);
$dataele[1] = str_replace("&nbsp;", "_", $dataele[1]);
$houseinfo = filter_var($houseinfo, FILTER_SANITIZE_STRING);
$dataele[1] = preg_replace("/&#?[a-z0-9]+;/i", "", $dataele[1]);
  • 0
    Note: You might wonder why trim(html_entity_decode('&nbsp;')); doesn't reduce the string to an empty string, that's because the '&nbsp;' entity is not ASCII code 32 (which is stripped by trim()) but ASCII code 160 (0xa0) in the default ISO 8859-1 encoding.
  • 0
    @ Класс, не могли бы вы сказать мне, как я могу заставить его работать, пожалуйста?
Показать ещё 3 комментария
Теги:
preg-replace
trim
simple-html-dom

1 ответ

0

надеюсь, это поможет.

    $string = str_replace(' ', '-', htmlspecialchars_decode($element->plaintext)); 
            $string = preg_replace('/[^A-Za-z0-9-_!@#:$%^&*\/()+={}<>?;, \-]/', '', $string);
            $string = preg_replace('/-+/', ' ', $string);
    echo $string;

Ещё вопросы

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