Ir para conteúdo

POWERED BY:

Arquivado

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

paginad

JSON - pegar valor

Recommended Posts

Não tenho muito conhecimento em PHP. Como eu faço no json abaixo para retornar o "Subject" e o item "multipart/alternative"

 

[
    [
        "Received",
        "by luna.mailgun.net with SMTP mgrt 8734663311733; Fri, 03 May 2013 18:26:27 +0000"
    ],
    [
        "Content-Type",
        [
            "multipart/alternative",
            {
                "boundary": "eb663d73ae0a4d6c9153cc0aec8b7520"
            }
        ]
    ],
    [
        "Mime-Version",
        "1.0"
    ],
    [
        "Subject",
        "Test deliver webhook"
    ],
    [
        "From",
        "Bob <bob@>"
    ],
    [
        "To",
        "Alice <alice@example.com>"
    ],
    [
        "Message-Id",
        "<20130503182626.18666.16540@mkt>"
    ],
    [
        "X-Mailgun-Variables",
        "{\"my_var_1\": \"Mailgun Variable #1\", \"my-var-2\": \"awesome\"}"
    ],
    [
        "Date",
        "Fri, 03 May 2013 18:26:27 +0000"
    ],
    [
        "Sender",
        "bob@mkt."
    ]
]

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use json_decode para decodificar, foreach para percorrer o array

 

no caso de multipart/alternative é um objeto, so precorrer novamente com foreach

 

Code

$decode = json_decode($json);

foreach ($decode as $key => $array) {	
	
	if($array[0] == 'Content-Type'){		
		
		foreach ($array[1] as $key => $value)		
			if($value2 != 'multipart/alternative')
				echo $value->boundary . '<br />';				
		
	}
	
	if($array[0]=='Subject')
		echo $array[1];
	
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, vou tentar.

 

Estou usando Sql Server. Quando gravo na base os acentos ficam assim: "n├â┬úo" era para ser o "não".

 

Eu estou começando com PHP agora, to quebrando a cabeça.

 

Aqui por exemplo

 

if($array[0]=='Subject')
echo $array[1];

 

 

O $array[1] que retorna o assunto está vindo assim como disse acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Converta tudo para UTF-8, banco, conexao, scripts


Se este json é externo

 

use esta função

 

function utf8_converter($array)
{
	array_walk_recursive($array, function(&$item, $key){
		if(!mb_detect_encoding($item, 'utf-8', true)){
				$item = utf8_encode($item);
		}
	});
 
	return $array;
}

Uso

foreach ($json as $key => $array) { 


    $array = utf8_converter($array);

    ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Converti...mudei a Collation para Latin1_General_CI_AS coloquei no topo do php :

 

header('Content-Type: plain/text; charset=utf-8');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willians eu to rodando o PHP no Windows. Mudei para a versão 5.4 e o código abaixo não roda.

 

@mssql_connect($dbhost,$user,$password) or die("Não foi possível a conexão com o servidor!");
@mssql_select_db("$db") or die("Não foi possível selecionar o banco de dados!");
Sabe pq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca usei estas funções mssql_, mas acredito que ela, assim como outras, foram depreciadas depois da versão 5.3

 

Retire as arrobas @ do code para mostrar os erros "Warnings", de repente os drivers não esteja habilitados, para isso use phpinfo

 

Como a microsoft tem seu próprio conjunto de drivers, de uma olhada no link abaixo:

http://www.microsoft.com/en-us/download/details.aspx?id=20098

 

 

Ps.: Te aconselho a usar PDO para as abstrações do DB, e não ficar dependente de uma função especifica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema da conexão, só o acento que ainda não estou conseguindo gravar corretamente no SQL SERVER.

 

o Não está assim "não"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algum collation está confuso.

 

Você mudou o collation do banco pra Latin e quer que exiba como UTF8? Não entendo isso.

 

"Dá um confere" se:

  • Seu meta encode está UTF8
  • Se seu banco está UTF8_General
  • Se seu BOM está como UTF8

Compartilhar este post


Link para o post
Compartilhar em outros sites

Independente de banco de dados, como eu faço para que a string json converta para o padrão iso.

 

Quando eu uso o código abaixo para converter eu array eu preciso que o acento que correto.

 

$data = json_decode($json, true);

 

 

Tentei usar a função que o Willianms passou mas não deu certo.

 

function utf8_converter($array)
{
array_walk_recursive($array, function(&$item, $key){
if(!mb_detect_encoding($item, 'utf-8', true)){
$item = utf8_encode($item);
}
});

return $array;
}

 

 

o "é" por exemplo está vindo assim : Ã%

 

eu tentei usar o htmentities e deu nisso: "É"

 

mas o que preciso mesmo seria: "é"

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Converti...mudei a Collation para Latin1_General_CI_AS coloquei no topo do php :

Não sei se já mudou para UTF-8, mas se quer usar utf-8, não faz sentido manter Latin

 

 

Tenta mudar as configurações no php.ini pelo php, setando no ini_set antes de chamar sua conexão.

<?php
ini_set('mssql.charset', 'UTF-8');

mssql_connect($dbhost,$user,$password) or die("Não foi possível a conexão com o servidor!");

ou monte uma função

mb_detect_encoding($value, mb_detect_order(), true) === 'UTF-8' ? $value : mb_convert_encoding($value, 'UTF-8');

ou ve se isso funciona no mssql

mssql_query("SET NAMES 'utf8'");  

Para que funcione corretamente, tudo tem que estar em utf-8 como já foi falado, não adianta nada se seu banco, ou tabela, ou campo da tabela estiver em outra codificação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams, mas como eu faço para alterar o acento para o português normal? Imagina que não fosse gravar no banco, que quisesse só printar na tela com a acentuação correta.

 

Como ficaria?

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.