2016-01-28 2 views
1

Я использую goutte в php для получения html страницы. Я вызываю php, используя jquery ajax, и я помещаю страницу в область документа (#doc).Очистить специальный символ в html с помощью php

Я хотел бы поместить эту страницу без специальных символов, например   и других, но моя функция clean() не работает. Как я могу это решить?

PHP:

<?php 
require_once 'goutte.phar'; 
use Goutte\Client; 

if(isset($_GET['url'])) { 
    $url = $_GET['url']; 
} 
//client used to send requests to a website and returns a crawler object 
$client = new Client(); 
$client->getClient()->setDefaultOption('config/curl/'.CURLOPT_SSL_VERIFYHOST, FALSE); //codice per accettare anche https 
$client->getClient()->setDefaultOption('config/curl/'.CURLOPT_SSL_VERIFYPEER, FALSE); 
$crawler = $client->request('GET', $url); 
if($status_code==200){ 



     $result = $crawler->filterXPath('html/body')->html(); 
     $result=clean($result); 
     echo $result; 

} 
else { 
    //in case of error 
    echo "HTTP/1.0 400 Bad Request"; 
} 

function clean($conv) { 
    $string = htmlentities($conv, null, 'utf-8'); 
    $conv = str_replace("&nbsp;", "", $string); 
    $conv = html_entity_decode($conv); 
    return($conv); 
} 

?> 

JAVASCRIPT:

function visual(search) { 


    $.ajax({ 
      type: "GET", 
      url: "goutte.php?url="+search, 
      success: function(data) 
      { 
       var content=$.parseHTML(data); 
       $("#doc").html(contenuto); 

      }, 
      //azione in caso di errore 
      error: function() 
      { 
       alert("Error"); 
      } 
     }); 
} 

ответ

3

Если вы хотите, чтобы декодировать кодированный HTML обратно регулярно, вам нужно использовать html_entity_decode. Это все, что вам нужно сделать. Использование htmlentities снова в кодированной html-строке неверно, а также использование str_replace.

Функция clean должна поэтому расшифровывать только кодированную HTML-строку.

function clean($conv) { 
    $conv = html_entity_decode($conv, NULL, "UTF-8"); //To 'force' UTF-8 charset (php.ini settings may differ, that's why!) 
    return $conv; 
} 

http://php.net/html_entity_decode

+0

Это не работает, в $ («#») документ, я могу видеть, используя String.charCodeAt (индекс), коды, такие как 10, которые являются символы, которые я не хочу have – SctALE

+0

Добавить «замену», чтобы позаботиться об этих персонажах? – Veve

+0

Дамп вывода '$ crawler -> ...' и вывода 'clean' с' var_dump() ', если вывод по-прежнему кодируется html, тогда ваш ввод был html-кодирован более одного раза (или вход поврежден). –

Смежные вопросы