Ir para conteúdo

POWERED BY:

Arquivado

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

Freisleben

Formatar uma String

Recommended Posts

Ola Amigos,

 

Tenho uma string que preciso formatar que é a seguinte:

 

2076360 SOCIEDADE INSTITUTO MISSIONARIO 02/08/2007 TAE

 

Estou começando fazer o codigo que está assim

 

$txtcolar = $_POST["txtcolar"];$trimmed = trim($txtcolar);$c_volume   = substr($txtcolar, 0, 7); /** Mostra o Volume = 2076360

Agora o problema é que a razão social varia de tamanho, então pensei ir até o final da string pegar os 3 caracter da direita para esquerta e assim por diante.

 

Mais não sei se existe alguma função que me possibilida fazer isso!!!

 

Alguem sabe???? você ve outro jeito de fazer ??

 

Então quero fazer esta formatação para jogar no banco mysql cada informação no seu campo....

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta fazer assim :

 

<?php$var = "2076360 SOCIEDADE INSTITUTO MISSIONARIO 02/08/2007 TAE";preg_match_all("/^(\d{7})* (.*) (\d{2}\/\d{2}\/\d{4}) (.*)$/i", $var, $out, PREG_SET_ORDER );foreach ( $out as $colunas ) {	echo "String Completa: "	. $colunas[0] . "<br />\n";	echo "Parte 1: " 			. $colunas[1] . "<br />\n";	echo "Parte 2: " 			. $colunas[2] . "<br />\n";	echo "Parte 3: " 			. $colunas[3] . "<br />\n";	echo "Parte 4: " 			. $colunas[4] . "<br />\n\n";}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara excelente....fico show....tenho só uma duvida...Como poderia armazernar o array $colunas no banco de dados. Tenho uma tabela onde tem os campos volume, cliente, data, produto.To iniciando no php.....antes programava em vba do excel.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja Adailton com o explode a String ficara separada assim:

2076360SOCIEDADEINSTITUTOMISSIONARIO02/08/2007TAE

eu acho ficaria mais complicado montar a razão social dessa maneira, por exemplo, ficaria :$razaoSocial = $obj[1] . $obj[2] . $obj[3] ;agora suponha que a Razao seja "Lojas a Vencedoras de Tal Cidade" dai complica um pouco né, nesse caso acho que as ER são mais viaveis que o explodeAbraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

por exemplo você pode fazer assim :

 

<?php$var = "2076360 SOCIEDADE INSTITUTO MISSIONARIO 02/08/2007 TAE";preg_match_all("/^(\d[^\s]+)* (.*) (\d{2}\/\d{2}\/\d{4}) (.*)$/i", $var, $out, PREG_SET_ORDER );/*	Aqui você abra a conexão com o BD*/$executaSQL	=	mysql_query( "	INSERT	INTO	nome_da_tabela 												(														campo1,													campo2,													campo3,													campo4												) 										VALUES	(													'{$out[0][1]}',													'{$out[0][2]}',													'{$out[0][3]}',													'{$out[0][4]}'												)" );if ( !$executaSQL ) {	echo "Erro na INSTRUCAO INSERT";}										?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

netShot você poderia me explicar como funciona a linha abaixo ???preg_match_all("/^(\d{7})* (.*) (\d{2}\/\d{2}\/\d{4}) (.*)$/i", $var, $out, PREG_SET_ORDER );Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mude para isso:

preg_match_all("/^(\d[^\s]+)* (.*) (\d{2}\/\d{2}\/\d{4}) (.*)$/i", $var, $out, PREG_SET_ORDER );
vamos lá, leitura recomendada :

 

Expressões Regulares - Guia de Consulta Rápida

por Aurélio Marinho Jargas e Editora Novatec, ©2001

Link : http://guia-er.sourceforge.net/guia-er-40.html

 

Aqui você vai saber um pouco mais sobre Expressões Regulares (ER's).

 

A função preg_match_all ira executar uma busca em uma string utilizando-se das ER's

 

A sintaxe dela é

 

preg_match_all ( string $pattern, string $subject, array &$matches [, int $flags [, int $offset]] )

 

pattern - > é a ER que utilizamos para buscar / separar / filtrar / tratar

subject - > é onde a ER vai ser aplicada

matches -> retorna um array com o resultado encontrado

flags -> tipo de combinação do array de resultado

 

sobre a ER vamos por parte :

 

toda vez que utilizar algum comando que comece por preg_ temo os utilizar um caracter inicial e final para escapar a ER, nesse caso eu usei uma "/" tanto no começo como no final

 

/^(\d[^\s]+)* (.*) (\d{2}\/\d{2}\/\d{4}) (.*)$/i

 

Os parênteses "()" separam as strings, são chamados de retrovisores (acho que é isso mesmo xD) então teremos 4 retrovisores

 

^ -> indica o inicio da string ( nesse caso deve começar por números a string )

(\d[^\s]+)* -> aqui ele pega todos dos caracteres que forem números até encontra um espaço em branco, continuando

(.*) -> todos os caracteres ( números - letras etc ) após a 1º "retrovisor", mas ai você pergunta, e como ele não pegou o restante tudo ? A resposta está na continuação da ER(abaixo) se eu tivesse apenas terminado a ER "/i" ele identificaria o segundo valor como todo o resto da string

(\d{2}\/\d{2}\/\d{4}) -> aqui ele pega a data no formato dd/mm/aaaa note que para utilizar caracteres reservados na ER tenho que escapa-los "\/"

(.*) -> todos os caracteres ( números - letras etc ) após o 3º "retrovisor"

$ -> final da string ( e terminar com qualquer coisa xD)

 

Leia o site que te passei que você vai entende melhor ( não sou muito bom em explicar assuntos complexos :( )

 

Mas tome cuidado com as ER's, utilize-a somente onde for realmente necessário, pois, é necessário carregar o parser então não abuse dela, se deseja apenas saber se uma string está contida em outra use strpos() ou strstr().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros colegas,Sou iniciante em PHP, e estou tentando converter uma data inserida em um campo do formulario, e quero convertê-la para o formato mysql. Como faço isso?Vale lembrar que estou utilizando o Smarty para fazer os templates de visualização

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros colegas,Sou iniciante em PHP, e estou tentando converter uma data inserida em um campo do formulario, e quero convertê-la para o formato mysql. Como faço isso?

Bem, existem vários tópicos sobre esse assunto, basta utilizar-se do botão de Buscamas ai vai :
function campo_data($data) {	return implode(preg_match("~\/~", $data) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $data) == 0 ? "-" : "/", $data)));}
Essa função (retirada aqui do fórum mesmo - só não lembro o tópico :lala: ) converte as datas do formato brasileiro para o americano e vice-versa.para usala é simples
$data = campo_data ( $data_mysql );
se a data for por exemplo : 01/08/2007 vai virar 2007-08-01caso seja 2007-08-01 vai virar 01/08/2007

Compartilhar este post


Link para o post
Compartilhar em outros sites

netShot, como farei a chamada antes da inserção no banco? segue exemplo: if($params) { $query = "INSERT INTO licitacao" . "(titulo, objeto, vlr_Estimado, data_Publicacao, data_Abertura, horario, estatus, situacao )" . "VALUES ('" . $params['titulo']. "','" . $params['objeto']. "','" . $params['vlr_Estimado']. "','" . $params['data_Publicacao']. "','"

Compartilhar este post


Link para o post
Compartilhar em outros sites

netShot, como farei a chamada antes da inserção no banco? segue exemplo: if($params) { $query = "INSERT INTO licitacao" . "(titulo, objeto, vlr_Estimado, data_Publicacao, data_Abertura, horario, estatus, situacao )" . "VALUES ('" . $params['titulo']. "','" . $params['objeto']. "','" . $params['vlr_Estimado']. "','" . $params['data_Publicacao']. "','"

ficara assim :
. campo_data($params['data_Publicacao']). "','"

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seguinte erro aparece no browser;Fatal error: Call to undefined function campo_data() in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\licitacao\classeLicitacao.php on line 134

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você copiou o código da função :

 

(...)		   . campo_data($params['data_Publicacao']). "','"(...)function campo_data($data) {	return implode(preg_match("~\/~", $data) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $data) == 0 ? "-" : "/", $data)));}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim!! o codigo ficou assim:function campo_data($data) { return implode(preg_match("~\/~", $data) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $data) == 0 ? "-" : "/", $data))); } //função cadastrar function cadastrar($params) { if($params) { $query = "INSERT INTO licitacao" . "(titulo, objeto, vlr_Estimado, data_Publicacao, data_Abertura, horario, estatus, situacao )" . "VALUES ('" . $params['titulo']. "','" . $params['objeto']. "','" . $params['vlr_Estimado']. "','" . campo_data($params['data_Publicacao']). "','"O erro foi justamente na chamada o método: . campo_data($params['data_Publicacao']). "','"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz todos os testes aqui e funcionou corretamente, esse erro :

Fatal error: Call to undefined function campo_data() in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\licitacao\classeLicitacao.php on line 134

Fala que a função chamada não existe

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.