2017-12-30 18 views
2

Ich habe zwei Variablen, die nicht mit in_array interagieren wollen, ich breche ihnen den Kopf.Variablen funktionieren nicht?/in_array

(erster Teil) Zusatz Main:

//Get Countrys 
$Countrys = str_get_html($Disthtml); 
$Countrys2 = $Countrys->find('span[class=regions regionsInt]'); 

//Get Departure Country 
$DepartureC = $Countrys2[0]; 
$DepartureC2 = explode(',', $DepartureC); 
$DepartureC3 = end($DepartureC2); 
$DepartureC4 = str_replace(' ', '', $DepartureC3); 
$DepartureCountry = $DepartureC4; 

//Get Arrival Country 
$ArrivalC = $Countrys2[1]; 
$ArrivalC2 = explode(',', $ArrivalC); 
$ArrivalC3 = end($ArrivalC2); 
$ArrivalC4 = str_replace(' ', '', $ArrivalC3); 
$ArrivalCountry = $ArrivalC4; 

(Zweiter Teil) Main:

//Check if Departure Country or Arrival Country is inside the EU 
$CountrysEU = array('Austria', 'Belgium', 'Bulgaria', 'Croatia', 'Cyprus', 'CzechRepublic', 'Denmark', 'Estonia', 'Finland', 'France', 'Germany', 'Greece', 'Hungary', 'Ireland', 'Italy', 'Latvia', 'Lithuania', 'Luxembourg', 'Malta', 'Netherlands', 'Poland', 'Portugal', 'Romania', 'Slovakia', 'Slovenia', 'Spain', 'Sweden', 'UnitedKingdom'); 

if(in_array($DepartureCountry, $CountrysEU) || in_array($ArrivalCountry, $CountrysEU)){ 
    echo 'EU'; 
} 
else { 
    echo 'NotEU'; 
} 

Die Variablen $ArrivalCountry und $DepartureCountry abgeschabt (curl php) von einer Webseite und manipuliert werden, damit sie den EU-Ländern nach Namen passen, wenn sie in der EU sind.

Var_dump der beiden var:

$ArrivalCountry: string(13) "Russia" 
$DepartureCountry: string(20) "UnitedKingdom" 

Warum in_array mit meinem Variablen spielt keine, es gibt nur NotEU.

Hinweis:

Wenn ich die Variablen manuell wie folgt definieren:

$ArrivalCountry = 'Russia'; 
$DepartureCountry = 'UnitedKingdom'; 

Der Code funktioniert perfekt.

+1

Sieht Codierung Problem, Ihre Zeichen in Strings sieht mehr als 1 Byte sein. – Muhammad

+1

@Muhammad ja, es ist ein Codierungsproblem –

Antwort

2

Nach dem Ausführen Ihres Codes habe ich erfahren, dass Ihre beiden Länder haben </span> drin und aufgrund der Codierung Problem sie nicht zeigen und verwirren Sie.

Sie haben unten Code zu verwenden, damit es funktioniert: -

<?php 
header('Content-type: text/plain; charset=utf-8'); // add this encoding 
include('simple_html_dom.php'); // i think you already have this 

// Your CURL CODE 
$Disthtml = curl_exec($ch2); // get Data from curl 


$Countrys = str_get_html($Disthtml); 

$Countrys = $Countrys->find('span[class=regions regionsInt]'); 

//Get Departure Country 
$DepartureCountry = str_replace('</span>','',trim(end(explode(',', $Countrys[0])))); // remove unnecessary variable creation 

//Get Arrival Country 
$ArrivalCountry = str_replace('</span>','',trim(end(explode(',', $Countrys[1])))); // remove unnecessary variable creation 


$CountrysEU = array('Austria', 'Belgium', 'Bulgaria', 'Croatia', 'Cyprus', 'CzechRepublic', 'Denmark', 'Estonia', 'Finland', 'France', 'Germany', 'Greece', 'Hungary', 'Ireland', 'Italy', 'Latvia', 'Lithuania', 'Luxembourg', 'Malta', 'Netherlands', 'Poland', 'Portugal', 'Romania', 'Slovakia', 'Slovenia', 'Spain', 'Sweden', 'United Kingdom'); 

if(in_array($ArrivalCountry, $CountrysEU) || in_array($DepartureCountry, $CountrysEU)){ 
    echo 'EU'; 
} 
else { 
    echo 'NotEU'; 
} 
Verwandte Themen