Ir para conteúdo
Fórum Script Brasil
  • 0

Regex para alterar links com preg_replace


Pj Pedrosa

Pergunta

Olá, pessoal!

Esta é minha primeira mensagem neste fórum.

Estou com o seguinte problema: criei um script que lê uma página externa (via file_get_contents). Minha ideia é inserir o conteúdo dessa página num banco de dados, mas nesse conteúdo existem algumas tags <img> e <a> com referências para arquivos locais. Então, preciso modificar o endereço dessas imagens e links para que elas apontem para o site original. Por exemplo:

Ao ler a página externa, tenho as seguintes tags:

<a href="arquivo-local.php">Link</a>
<img src="imagens/local.png" alt="Imagem" />
E, antes de inserir no banco de dados, preciso alterar para:
<a href="http://www.foo.com.br/arquivo-local.php" target="_blank">Link</a>
<img src="http://www.foo.com.br/imagens/local.png" alt="Imagem" />

Resumindo: preciso encontrar apenas os <a> e <img> com referências locais (existem alguns com referências externas tb) e inserir o endereço do site original neles.

Sei que preciso usar uma regex para fazer a substituição com preg_replace, mas não estou conseguindo acertar na regex :(

Alguém poderia ajudar?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Salve,

Não testei, fiz na correria porque hoje tá florida

<?php
$site   = 'http://www.uol.com.br/';
$str    = '<a href="arquivo-local.php">Link</a><img src="imagens/local.png" alt="Imagem" />';
printf('<h1>%s</h1>', preg_replace('/(href|src)+="(.*?)"/i', "$1=\"$site$2\"", $str));

Acho que é +/- isso..

abraços

Editado por ursolouco
Link para o comentário
Compartilhar em outros sites

  • 0

ursolouco, obrigado pela sua resposta!

Seu script substitui TODAS as tags <a> e <img>, adicionando o endereço do site original nelas. O problema é que eu preciso encontrar APENAS as tags com referências locais (ou seja, sem "http"). Além disso, existem tags com aspas duplas, aspas simples e sem aspas... <_<

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...