使用 php 清除 html 中的特殊字符
Clean special character in html using php
我在 php 中使用 goutte
来获取页面的 html。我使用 jquery ajax
调用 php 并将页面放在文档区域 (#doc)
.
我希望该页面不包含特殊字符,例如
和其他字符,但我的 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(" ", "", $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");
}
});
}
如果你想把编码的html解码回正常的,你需要使用html_entity_decode
。这就是您需要做的全部。在 html 编码的字符串上再次使用 htmlentities
是错误的,使用 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;
}
我在 php 中使用 goutte
来获取页面的 html。我使用 jquery ajax
调用 php 并将页面放在文档区域 (#doc)
.
我希望该页面不包含特殊字符,例如
和其他字符,但我的 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(" ", "", $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");
}
});
}
如果你想把编码的html解码回正常的,你需要使用html_entity_decode
。这就是您需要做的全部。在 html 编码的字符串上再次使用 htmlentities
是错误的,使用 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;
}