2017-10-20 1 views
-2

Dies ist mein Code:Konvertieren Unicode-Array auf UTF-8 php

<?php 
$url = 'https://www.instagram.com/p/BachWpLgFAp/'; 
$content = file_get_contents($url); 
$first_step = explode('edge_media_to_caption": {"edges": [{"node": {"text": "' , $content); 
$second_step = explode("}}]}" , $first_step[1]); 

$str = $second_step[0]; 
$str2 = substr($str, 0, -1); 
print_r ($str2); 

$caption = $str2; 
if($user_message == "/test"){ 

      var_dump(bot('sendMessage',[ 
     'chat_id'=>$chat_id, 
     'text'=>$caption, 

    ])); 
} 

?> 

Ausgangsdaten von $ caption ist: Sie \ u2019re nie zu alt, im Schlamm zu spielen. #teampixel photographer @ samarthv.pattar wirft ein Zeichen auf sein Spiegelbild nach dem Regen.

Wie kann ich \ u-Codes zu utf-8 konvertieren?

+1

Soweit ich sehen kann, ist dieser ganze Code für die Frage irrelevant, die eigentlich wie "Ich habe eine Schnur wie ..." formuliert werden kann, wirft ein \ u270c \ uf0f Zeichen auf sein Spiegelbild ... ' und müssen die '\ 'Escapes in UTF-8 konvertieren." – IMSoP

+0

Verwenden Sie [mb_convert_encoding()] (http://php.net/manual/en/function.mb-convert-encoding.php) – Jeff

+1

Teilen Sie eine JSON-Zeichenfolge manuell? Warum machst du es nicht einfach "json_decode"? – Jeff

Antwort

2

Dies scheint ein wenig aber dumm für mich. Sie sollten nicht versuchen, die JSON-Zeichenfolge selbst zu analysieren. Warum nicht einfach die gesamte JSON-Zeichenkette extrahieren und dann json_decode verwenden.

$url = 'https://www.instagram.com/p/BachWpLgFAp/'; 
$content = file_get_contents($url); 
if (preg_match('/<script[^>]+>\s*window\._sharedData[^\{]+(\{.*?);\s*<\/script>/ms', $content, $m)) { 
    $json = $m[1]; 
    $jsonData = json_decode($json, true); 
} 

Nach dem jsonData bekommen, man könnte eine solche Suche in der gegebenen Array für edge_media_to_caption.

foreach ($jsonData['entry_data']['PostPage'] as $page) { 
    $graphql = $page['graphql']; 
    var_dump($graphql['shortcode_media']['edge_media_to_caption']); 
} 

Btw. Es gibt eine offizielle Instagram-API, die der offizielle Weg sein sollte, um Ihre gewünschten Informationen zu erhalten. https://www.instagram.com/developer/endpoints/media/ Was Sie gerade tun, verstößt möglicherweise gegen ihre Nutzungsbedingungen.

+0

es ist ein Fehler in $ json = $ m [1]; Fehler: Syntaxfehler, unerwartet ';' – Mhdi

+0

fügen Sie ein ')' zur if-Bedingung vor '{' – Philipp

+0

Unicode-Zeichen haben eine schlechte Angewohnheit, json_encode fallen zu lassen. Das hat mich hierher gebracht. –