Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos , agradeço a ajuda , tenho um problema estou recebendo um site externo via CURL , ate ai tudo bem , o problema é que recebo em uma string que preciso formatar e ao usar o SUBSTR para formatar ele esta recortando o texto muito depois da posição correta, segue o codigo que estou usando :
class replace {
private $html;
private $header;
private $body;
function __construct($html) {
$this->html = $html;
}
function TagIniNum() {
$stringIni = addslashes('<head>');
$Ini = strpos($this->html, $stringIni);
return $Ini;
}
function TagFimNum(){
$stringFim = addslashes('</head>');
$Fim = strpos($this->html, $stringFim); // o corte esta ficando em lugar errado CORRIGIR
return $Fim;
}
function Corte() {
$TxtCort = mb_substr($this->html, $this->TagIniNum(), $this->TagFimNum());
echo $TxtCort;
}
}
e este é parte do conteudo da variavel $html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1; cache" />
<title>Consulta Débitos de Veículo</title>
<link href="/site/js/jQuery/css/estilo.css" rel="stylesheet" type="text/css" />
<link href="/site/js/jQuery/css/ui-lightness/jquery-ui-1.10.3.min.css" rel="stylesheet" type="text/css">
<script type="text/JavaScript" src="/site/js/jQuery/jquery-1.10.2.min.js"></script>
<script type="text/JavaScript" src="/site/js/jQuery/js/jquery-ui-1.10.3.min.js"></script>
<script type="text/JavaScript" src="./js/simpleCaptcha.js?ver=1.8"></script>
<script type="text/JavaScript" src="/site/js/captcha.js?ver=1.8"></script>
</head>
<body>
<form name="form" action="./consulta.php" method="post">
<div id="dialog" title=""></div>
Como quero recortar os texto contido entre as tag's header do html ele executa o recorte muitos caracteres apos a tag de fechamento, já tentei trabalhar diretamente com a variavel transformada com htmlentities e/ou usando o MB_SUBSTR e o resultado é o mesmo o corte sempre acontece muito apos a tag de final que é </header>.>
27 minutos atrás, gabrieldarezzo disse:
Tenta ai xD
http://simplehtmldom.sourceforge.net/
Obrigado pela atenção , vou verificar , pois meu sistema vai acessar um site https e estava usando a CURL para este fim mais obrigado Gabriel !
Olha, na questão em específico, o problema esta relacionado as quebras de linhas e espaçamentos.
Segue uma sugestão:
class HTMLRecort
{
private $html;
private $header;
private $body;
public function __construct($html)
{
$this->html = $html;
}
public function getHead()
{
$html = preg_replace("/\r?\n/","", $this->html);
preg_match('/<head>(.*)<\/head>/', $html, $matches);
return $matches[0];
}
}
$head = new HTMLRecort($html);
echo $head->getHead();>
3 horas atrás, EdCesar disse:
Olha, na questão em específico, o problema esta relacionado as quebras de linhas e espaçamentos.
Segue uma sugestão:
class HTMLRecort
{
private $html;
private $header;
private $body;
function __construct($html) {
$this->html = $html;
}
function getHead()
{
$html = preg_replace("/\r?\n/","", $this->html);
preg_match('/<head>(.*)<\/head>/', $html, $matches);
return $matches[0];
}
}
$head = new HTMLRecort($html);
echo $head->getHead();
Obrigado EdCesar , vou fazer aqui ! , deu certo inicializei a variavel $matches e blz ficou tudo em linha e o corte ficou certo, obrigado !Se você tivesse aberto o link teria visto q é possível efetuar um CURL (inclusive passando parametros de POST/GET/HEADER/COOKIE.
Exemplo:
<?php
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, 'https://meusite.com.br' );
$headers = array(
'Authorization: key=' . 'MY_TOKEN',
'Content-Type: application/json'
);
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
//Posts Field
$fields = array(
'site' => 'imasters.com.br'
);
//PAYLOAD
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
// Avoids problem with https certificate
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
// Create DOM from string
$html = str_get_html($result);
$html->find('div', 1)->class = 'bar';
$html->find('div[id=hello]', 0)->innertext = 'foo';
echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>>
3 horas atrás, gabrieldarezzo disse:
Se você tivesse aberto o link teria visto q é possível efetuar um CURL (inclusive passando parametros de POST/GET/HEADER/COOKIE.
Exemplo:
<?php
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, 'https://meusite.com.br' );
$headers = array(
'Authorization: key=' . 'MY_TOKEN',
'Content-Type: application/json'
);
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
//Posts Field
$fields = array(
'site' => 'imasters.com.br'
);
//PAYLOAD
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );
// Avoids problem with https certificate
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
// Create DOM from string
$html = str_get_html($result);
$html->find('div', 1)->class = 'bar';
$html->find('div[id=hello]', 0)->innertext = 'foo';
echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>
Eu vi sim mais só depois de te agradecer pela ajuda, mais uma vez obrigado a todos, como marcar este tópico como resolvido ?
Tenta ai xD
http://simplehtmldom.sourceforge.net/