Jump to content


Photo

Dúvida Com Expressão Regular


  • Faça o login para participar
10 replies to this topic

#1 romzinho

romzinho

    Turista

  • Usuários
  • 39 posts
  • Sexo:Não informado

Posted 25/02/2008, 11:05

Olá pessoal, estou com uma dúvida sobre expressão regular.

Quero pegar tudo que estiver entre as tags de paragrafo (<p>). Usei a seguinte expressão regular:
preg_match_all("/<p(.*?)>(.*?)<\/p>/i", $input, $output)

Observe que eu usei antes do fechamento da primeira tag o (.*?) por que eu não sei o que está lá dentro. Pode ter id, class, etc... Mas eu não quero saber o que está ali dentro, quero apenas o <p>O QUE ESTÁ AQUI</p>.

Como eu poderia fazer isso? Ignorar o primeito (.*?) e só pegar os dados do segundo (.*?)?

Obrigado

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 25/02/2008, 13:05

Bom, é justamente isto que você fez. :D

Agora, perceba que $output é uma matriz e o valor que você precisa está em $output[2] que seria o segundo "retrovisor" da expressão regular.

Faça o teste:

<?php

$input = "<p align=\"center\">testando isso..</p> <p align=\"center\">Paulo André</p>";

preg_match_all("/<p(.*?)>(.*?)<\/p>/i", $input, $output);

print_r($output[2]);

?>

Saída:
Array
(
	[0] => testando isso..
	[1] => Paulo André
)

Flws...
(ok2)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 MARQUESMARCIO

MARQUESMARCIO

    Normal

  • Usuários
  • 76 posts
  • Sexo:Não informado

Posted 26/05/2008, 16:23

E pegar apenas o primeiro link de um texto e fazer o download do mesmo?
Pode ser deste modo?

<?php

$input = " u 9u9u 9u 9u 9u 9u9u <a  href=\"http://defrge.com/eretgtgrewwerwr.mp3\">http://defrge.com/eretgtgrewwerwr.mp3</a>hewuifh uih triht iot44 ut894 489 t489 t9hio43htoi43hoi4th 4oih4oi thoi4h <a href=\"http://www.efoiertoijoirjerj.com\">http://www.efoiertoijoirjerj.com</a>";

preg_match_all("/<a(.*?)>(.*?)<\/a>/i", $input, $output);

print_r($output[0]);

$url = Array[0];
$destino = '/home/popo/public_html/files/';

copy($url$destino.basename($url));
?>


#4 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 26/05/2008, 19:48

De início, já que você quer apenas um link, você não precisa de preg_match_all, apenas da preg_match.

E sim, você pode usar copy(), basta fornecer os devidos parâmetros corretamente. (e tendo a configuração possibilitando o uso de url)
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#5 MARQUESMARCIO

MARQUESMARCIO

    Normal

  • Usuários
  • 76 posts
  • Sexo:Não informado

Posted 26/05/2008, 20:00

Como posso usar essa função para obter o link http do mp3 completo nesta variável:

$input = " u 9u9u 9u 9u 9u 9u9u . hewuifh uih triht iot44 ut894 489 t489 www.efoiertoijoirjerj.com fghgf tyy trytr ";

#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 26/05/2008, 20:06

Tente com:
/http:\/\/[\w.\/-]++(?<=\.mp3)/

Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#7 MARQUESMARCIO

MARQUESMARCIO

    Normal

  • Usuários
  • 76 posts
  • Sexo:Não informado

Posted 27/05/2008, 05:29

preg_match("/http:\/\/[\w.\/-]++(?<=\.mp3.)/", $input, $output);

print_r($output[0]);

Resultado:
.

Como tirar aquele ponto no final ?

Tendo em conta que a variavel assunto é:

$assunto = "wew iwj wi wjr j rjr rj ruih h   96.txt";
preg_match("/<=\.txt/", $assunto, $output1);
print_r($output1);

Como posso pegar a palavra 96.txt tendo em conta que ela pode ser qualquer numero.txt

Edição feita por: MARQUESMARCIO, 26/05/2008, 20:31.


#8 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/05/2008, 07:57

Tente:

/([0-9]+)\.txt/
Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#9 MARQUESMARCIO

MARQUESMARCIO

    Normal

  • Usuários
  • 76 posts
  • Sexo:Não informado

Posted 27/05/2008, 08:52

Funcionou perfeitamente!! :)

Como posso tirar aquele ponto no final daquele link ? tentei a opção de tirar os pontos, mas assim ele tira todos os pontos :(

#10 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/05/2008, 09:05

Explique a si mesmo qual o motivo deste ponto depois do mp3 que você mesmo resolve o problema.
preg_match("/http:\/\/[\w.\/-]++(?<=\.mp3.)/", $input, $output);

Flws...
(y)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#11 MARQUESMARCIO

MARQUESMARCIO

    Normal

  • Usuários
  • 76 posts
  • Sexo:Não informado

Posted 27/05/2008, 16:36

Se retirar o . na expressão ele já não busca o link

removi o ponto com a função:

substr_replace($output[0] ,"",-1);





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq