Problema Com Preg_match_all
Started By luizhcota, 31/07/2009, 13:44
7 replies to this topic
#1
Posted 31/07/2009, 13:44
Pessoal,
Tenho que pegar o conteúdo que está dentro de um html, a tag é:
<td align="right" nowrap width="134" class="label">31/03/2009</td>
estou tentando assim, porém não consegui.
$erValor = "/<td width=\"134\" align=\"right\" class=\"text\"(.*?)?>31/03/2009(.*?)<\/td>/i";
preg_match_all ($erValor, $resultado, $ImprimiValor);
alguma sugestão?
Tenho que pegar o conteúdo que está dentro de um html, a tag é:
<td align="right" nowrap width="134" class="label">31/03/2009</td>
estou tentando assim, porém não consegui.
$erValor = "/<td width=\"134\" align=\"right\" class=\"text\"(.*?)?>31/03/2009(.*?)<\/td>/i";
preg_match_all ($erValor, $resultado, $ImprimiValor);
alguma sugestão?
#2
Posted 31/07/2009, 16:52
vc precisa da data?
fiz assim:
31/03/2009
[]'s
fiz assim:
/<td align="right" nowrap width="134" class="label">\(.*\)<\/td>/e no primeiro espelho me retornou:
31/03/2009
[]'s
[]'s
#3
Posted 01/08/2009, 23:51
MarcoviZ: No caso, seria sem o escape nos parênteses.
Mas enfim, as vezes pode ser melhor você utilizar uma extensão como a SimpleXML, que fica bem simples o acesso aos nodes num HTML.
Exemplo:
[codebox]<?php
$source = <<<HTML
<html>
<body>
<table>
<tr>
<td width="134" align="right" class="text">teste</td>
</tr>
<tr>
<td width="134" align="right" class="text">31/03/2009</td>
</tr>
</table>
</body>
</html>
HTML;
$html = simplexml_load_string($source);
var_dump($html->body->table->tr[1]->td); // Segundo <tr><td>[/codebox]
Mas enfim, as vezes pode ser melhor você utilizar uma extensão como a SimpleXML, que fica bem simples o acesso aos nodes num HTML.
Exemplo:
[codebox]<?php
$source = <<<HTML
<html>
<body>
<table>
<tr>
<td width="134" align="right" class="text">teste</td>
</tr>
<tr>
<td width="134" align="right" class="text">31/03/2009</td>
</tr>
</table>
</body>
</html>
HTML;
$html = simplexml_load_string($source);
var_dump($html->body->table->tr[1]->td); // Segundo <tr><td>[/codebox]
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#4
Posted 09/08/2009, 01:38
Pessoal,
Na verdade eu o 31//03/2008 e o titulo da coluna. veja um exemplo em http://luizhcota.k2f...om/TestePhp.php
Preciso pega os dados da coluna com o título 31/03/2008.
Na verdade eu o 31//03/2008 e o titulo da coluna. veja um exemplo em http://luizhcota.k2f...om/TestePhp.php
Preciso pega os dados da coluna com o título 31/03/2008.
#5
Posted 09/08/2009, 12:04
Com DOM e SimpleXML é possível fazer dessa forma:
[codebox]<?php
$dom = new DOMDocument;
@$dom->loadHTMLFile('http://luizhcota.k2f...om/TestePhp.php');
$html = simplexml_import_dom($dom);
foreach ($html->body->center->table->tr[1] as $table) {
foreach ($table->div->table->tr as $x) {
var_dump((string)$x->td[3]);
}
}
[/codebox]
[codebox]<?php
$dom = new DOMDocument;
@$dom->loadHTMLFile('http://luizhcota.k2f...om/TestePhp.php');
$html = simplexml_import_dom($dom);
foreach ($html->body->center->table->tr[1] as $table) {
foreach ($table->div->table->tr as $x) {
var_dump((string)$x->td[3]);
}
}
[/codebox]
- Felipe JS likes this
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#6
Posted 09/08/2009, 21:47
Desculpe, sou novo no php e não conheço bem essa função, no caso de inserir as informações no banco de dados como seria sem o string(10), string(9)....... somente os valores
$dom = new DOMDocument; @$dom->loadHTMLFile('http://luizhcota.k2free.com/TestePhp.php'); $html = simplexml_import_dom($dom); foreach ($html->body->center->table->tr[1] as $table) { foreach ($table->div->table->tr as $x) { $teste = var_dump((string)$x->td[3]); $res = mysql_connect("localhost","root","") or die ('Não foi possível conectar ao banco de dados!'); mysql_select_db("Dados") or die ('Base de Dados Danificada'); $comando = "INSERT INTO teste VALUES ('teste')"; $res = mysql_query($comando); } }
Edição feita por: luizhcota, 09/08/2009, 21:50.
#7
Posted 10/08/2009, 20:53
mysql_connect dentro de loop? Você só precisa chamar a função uma vez. Não é mesmo?
No INSERT, basta usar:
[codebox]mysql_query("INSERT INTO teste VALUES ('". mysql_escape_string((string)$x->td[3]) ."')");[/codebox]
No INSERT, basta usar:
[codebox]mysql_query("INSERT INTO teste VALUES ('". mysql_escape_string((string)$x->td[3]) ."')");[/codebox]
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#8
Posted 11/08/2009, 08:18
Com certeza o mysql_connect tem que ficar fora do loop !! foi apenas um erro de Ctrl C e Ctrl V !!
Vou testar e coloco o resultado aqui.
Eclesiastes,
Perfeito, o codigo funcionou perfeitamente. Agora só de curiosidade, no caso de ter usado o código citado no primeiro post, como seria?
Vou testar e coloco o resultado aqui.
Eclesiastes,
Perfeito, o codigo funcionou perfeitamente. Agora só de curiosidade, no caso de ter usado o código citado no primeiro post, como seria?
$erValor = "/<td width=\"134\" align=\"right\" class=\"text\"(.*?)?>31/03/2009(.*?)<\/td>/i"; preg_match_all ($erValor, $resultado, $ImprimiValor);
Edição feita por: luizhcota, 11/08/2009, 08:18.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)