Ir para conteúdo

POWERED BY:

Arquivado

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

Ricardo.AQ

[Resolvido] usando preg_replace

Recommended Posts

Fala pessoal,

 

Estou com problema na hora de trocar um determinado código para o código html utilizando o preg_replace() para encontrar o código na string.

 

Segue o código:

 

function trocaTags($tag){
	$tag_img = '<span class="img_pagina"><img src="imagens/paginas/$1" /></span>';
	$tag_new = preg_replace('/\[img=(.*)\]/', $tag_img, $tag);
	return $tag_new;						  
}

echo trocaTags("Imagem 1 aqui [img=img1.jpg] Imagem 2 aqui [img=img2.jpg] Texto ");

 

Quando execute este código ele me retorna isso:

 

Imagem 1 aqui <span class="img_pagina"><img src="../imagens/paginas/img1.jpg] Imagem 2 aqui [img=img2.jpg" /></span> Texto [/php]

 

Alguem poderia me ajudar?

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ricardo.AQ,

 

Cuidado com .* ele é problemático em algumas situações.

 

function trocaTags( $tag ){
$tag_img = '<span class="img_pagina"><img src="imagens/paginas/$1" /></span>';
$tag_new = preg_replace( '/\[img=([^\]]+)\]/' , $tag_img , $tag );
return $tag_new;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado amigo, as ERs para mim sempre foram bem confusas.. rsrs..

 

Abraços!!

 

Muito obrigado novamente era justamente isso que eu precisava!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu faço para pegar somente o que esta entre a marcação da ER e usar para outros comandos, no caso queria fazer uma consulta mysql com a variavel $1 que ele pega.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, no caso funcionaria assim:

 

Esta função trocaria as tags que a pessoa inserir na string:

 

function trocaTags( $tag ){
       $tag_img = '<span class="img_pagina"><img src="imagens/paginas/$1" /></span>';
       $tag_new = preg_replace( '/\[img=([^\]]+)\]/' , $tag_img , $tag );
       return $tag_new;
}

echo trocaTags("Imagem 1 aqui [img=img1.jpg] Imagem 2 aqui [img=img2.jpg] Texto ");

 

Como se fosse o próprio editor do forum, porém a pessoa irá informar o nome da imagem que ela subiu.

 

E no banco de dados a tabela esta assim:

 

CREATE `paginas_imagens` (
 `pim_codigo` int(15) NOT NULL AUTO_INCREMENT,
 `pim_titulo` varchar(80) NOT NULL,
 `pim_img` varchar(36) NOT NULL,
 `pag_codigo` int(11) NOT NULL,
 PRIMARY KEY (`pim_codigo`)
)

 

O pim_titulo é o nome da imagem que será inserida na tag e eu preciso fazer uma consulta para pegar o pim_img que contem o link da imagem no servidor para exibir ela na hora de trocar as tags.

 

Não sei se deu para entender direito qualquer coisa tento explicar de outro jeito.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize preg_match passando o 3⁰ argumento para a função:

 

$str = 'Imagem 1 aqui [img=img1.jpg] Imagem 2 aqui [img=img2.jpg] Texto';

if ( preg_match_all( '/\[img=([^\]]+)\]/' , $str , $mtc ) ){
var_dump( $mtc[ 1 ] );
}

 

A saída:

array(2) {

[0]=>

string(8) "img1.jpg"

[1]=>

string(8) "img2.jpg"

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puts ve se você consegue dar uma luz para mim.

 

Para cada tag que eu for trocar eu preciso fazer uma consulta antes no banco de dados para depois trocar.

 

Ex.:

 

A pessoa irá inserir num campo textarea a tag para exibir a imagem : Texto imagem1.jpg Texto Texto...

 

Quando for para exibir na tela irá chamar a função que trocaria essa tag, no caso a função trocaTag();

 

Dentro da função eu teria que pegar o valor que a pessoa inseriu na tag (imagem1.jpg) fazer uma consulta no banco de dados e pegar um outro valor que será dado para cada imagem para ela ser única (94jjfdks8fe939ms.jpg) ai sim irá ser trocado o imagem1.jpg por <img src="imagens/94jjfdks8fe939ms.jpg" > para ser exibido na tela.

 

Alguem tem alguma idéia de como fazer esse processo, pois já tentei de tudo.

 

O que fiz até agora com a ajuda do amigo João Batista Neto foi:

 

function trocaTags( $tag ){	
preg_match_all( '/\[img="([^\]]+)"\]/' , $tag , $mtc ); 
for($i = 0; $i < count($mtc[1]); $i++){
	$tag_img = '<span class="img_pagina"><img src="imagens/paginas/'.$i.'" /></span>';
	$tag_new = preg_replace( '/\[img="([^\]]+)"\]/' , $tag_img , $tag );	
}	
return $tag_new;	
}

echo trocaTags('aaa  Img 1 [img="teste.jpg"] asdashduahsudha  ads  IMG 2 [img="teste2.jpg"] aasd as  asdashduahsudha asdashduahsudha [img="teste2.jpg"] [img="teste2.jpg"]');

 

Vlw!

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.