Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Colt

[Resolvido] Como separar texto de imagem

Recommended Posts

Iae pessoal beleza?

eu gostaria de saber como faço pra separar texto e imagem de uma variavel.

 

Exemplo:

 

$texto = 'texto <img src="imagem.png"/> texto';

 

na variavel acima tem texto e imagem na mesma,

porem eu gostaria de separa-los, para poder exibilos em lugares diferentes, tipo

 

$txt = "texto";

$imagem = '<img src="imagem.png"/>';

 

isto pegando os dados da variavel $texto

 

 

Grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para trabalhar com strings a melhor opção é usar Expressões Regulares. Se você ainda não conhece, passe a conhecer pois é uma habilidade indispensável. Então... fiz o seguinte código, talvez lhe seja útil:

 


$texto = 'texto <img src="imagem1.png"/>texto <img src="imagem2.png"/>texto <img src="imagem3.png"/>';
// Também funciona se tiver apenas uma imagem.


// Pegar as imagens
if(preg_match_all("/(<img src=\"([a-z0-9]*\.[a-z]{3})\" ?\/>)/is", $texto, $resultado) !== false) {

$imagens_tags = $resultado[1]; // Armazena as tags <img />
$imagens_nomes = $resultado[2];	// Armazena os nomes das imagens.
} else {
echo "Erro analizando texto";
}



// Retirar as imagens do resto do texto
if(!empty($imagens_tags)) { // Verifica se foram encontradas tags <img /> na string, senão, então não há o que filtrar.
$patterns = array();
foreach($imagens_tags as $imgt) {
	$imgt = quotemeta($imgt); // escapa meta caracteres
	$imgt = str_replace("/", "\/", $imgt); // escapa aspas simples (pq é usado como modificador pelo PCRE


	$patterns[]= "/{$imgt}/";
}

$txt = preg_replace($patterns, "", $texto);
}



var_dump($imagens_tags, $imagens_nomes, $txt);

 

O que você quer está nas variáveis $imagens_tags e $txt. A variável $imagens_tags é um array, se ele tiver apenas uma valor, você pode retorná-lo usando $imagens_tags[0].

 

Referências:

quotemeta

preg_match_all

preg_replace

Compartilhar este post


Link para o post
Compartilhar em outros sites

mangakah vlw cara era exatamente isso que eu procurava, e sobre Expressões Regulares eu sei alguma coisa so q a parti de agora irei me aprofundar mais.

flws

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal tudo bem?

Deu certo o que vocês disseram.

Porém quando tento puxar o texto do banco de dados ele não exibe o texto.

<?
$texto = html_entity_decode($texto);
//$texto = 'texto <img src="imagem1.png"/>texto <img src="imagem2.png"/>texto <img src="imagem3.png"/>';
// Também funciona se tiver apenas uma imagem.
// Pegar as imagens
if(preg_match_all("/(<img src=\"([a-z0-9]*\.[a-z]{3})\" ?\/>)/is", $texto, $resultado) !== false) {
$imagens_tags = $resultado[1]; // Armazena as tags <img />
$imagens_nomes = $resultado[2]; // Armazena os nomes das imagens.
} else {
echo "Erro analizando texto";
}
// Retirar as imagens do resto do texto
if(!empty($imagens_tags)) { // Verifica se foram encontradas tags <img /> na string, senão, então não há o que filtrar.
$patterns = array();
foreach($imagens_tags as $imgt) {
$imgt = quotemeta($imgt); // escapa meta caracteres
$imgt = str_replace("/", "\/", $imgt); // escapa aspas simples (pq é usado como modificador pelo PCRE
$patterns[]= "/{$imgt}/";
}
$txt = preg_replace($patterns, "", $texto);
}
echo $txt;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.