Ir para conteúdo

POWERED BY:

Arquivado

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

Claudio Escudero

template

Recommended Posts

Oi,Eu estava quebrando a cabeça numa seguinte situacao.Estou querendo fazer um sisteminha de template para um questionario q estou criando.Gostaria de fazer as seguintes funcoes.Queria q substitui-se dentro de um texto as expressoestitulo(20) para $titulo[20]ecampo(33) para $campo[33]Mas logicamente os numeros de dentro podem ser variados, esse é o problema q estou tendo.Estava tentando usar o preg_match_all para fazer essas mudancas, mas estava quebrando a cabeca e nao cheguei na conclusao.Alguem pode me dar uma força ae? Valeuz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa! Nunca tinha feito isso, mas achei interessante a idéia e dei uma pesquisada!

 

Acho que consegui o que eu queria e o que você precisava!

 

Veja se serve!!!

 

PHP

[*]<?php

[*]$variavel = "titulo(20)";

[*]preg_match_all("[(.*)\((.*)\)]", $variavel, $out, PREG_PATTERN_ORDER);

[*]$nova_variavel = "\$".$out[1][0]."[".$out[2][0]."]";

[*]echo $nova_variavel;

[*]?>

 

Espero ter ajudado!

 

Abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po, esta quase certo, eu tentei arrumar mas estou achando isso muito complicado.Com esse seu codigo quando você coloca essa frase:O titulo do documento é titulo(20)esta retornando assim:$O titulo do documento é titulo[20]Eu queria que retorna-se assimO titulo do documento é $titulo[20] :( Outro detalhe que eu percebi, ele nao pode usar varias vezes do codigo do template q eu fiz, por exemploO campo campo(20) do documento titulo(33) é verdadeiro.Gostaria que exibi-se assimO campo $campo[20] do documento $titulo[33] é verdadeiro.E somente campo e titulo sao os comandos, caso ele coloca-se teste(20), seria ignoradoValeu pela ajuda ai, estou tentando fazer essa mudanca com o seu codigo.Valeus

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso um replace é mais facil!!! Manda a vê aí!

 

PHP

[*]<?

[*]function replace($variavel){

[*] $variavel = str_replace("campo(","\$campo[",$variavel);

[*] $variavel = str_replace("titulo(","\$titulo[",$variavel);

[*] $variavel = str_replace(")","]",$variavel);

[*]return $variavel;

[*]}

[*]echo replace("O campo campo(20) do documento titulo(33) é verdadeiro.");

[*]//Resposta: O campo $campo[20] do documento $titulo[33] é verdadeiro.

[*]?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, ate poderia ser,

 

Mas alguma pessoa podia colocar algum ) em algum lugar que era para deixar mesmo.

 

 

Entao eu roubei um pouco a sua ideia.

 

Como entre os parenteses so podiam ter numeros.

 

Eu fiz a seguinte funcao

 

PHP

[*]

[*]function replace($variavel){

[*] $parte = explode('campo(', $variavel);

[*] foreach($parte as $key => $var){

[*] if($key == 0) continue;

[*] $pos = strpos($var, ")");

[*] $codigo = substr("$var", 0, $pos);

[*] if(is_numeric($codigo)){

[*] $var = substr_replace($var, ']', $pos, 1);

[*] $var = "\$campo[".$var;

[*] } else {

[*] $var = "campo(".$var;

[*] }

[*] $parte[$key] = $var;

[*] }

[*] $variavel = implode("", $parte);

[*]

[*] $parte = explode('titulo(', $variavel);

[*] foreach($parte as $key => $var){

[*] if($key == 0) continue;

[*] $pos = strpos($var, ")");

[*] $codigo = substr("$var", 0, $pos);

[*] if(is_numeric($codigo)){

[*] $var = substr_replace($var, ']', $pos, 1);

[*] $var = "\$titulo[".$var;

[*] } else {

[*] $var = "titulo(".$var;

[*] }

[*] $parte[$key] = $var;

[*] }

[*] $variavel = implode("", $parte);

[*]

[*] return $variavel;

[*]}

[*]

 

 

Deu tudo certo.

 

Valeu ae pela força

Sem ajuda de você´s eu axo q ia ser mais dificil eu ter essa ideia.

 

Falows

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.