2016-03-24 16 views
2

Ich habe einen API-Aufruf, der ein Feld meetingAddress mit dem folgenden Format zurückgibt. Straße " " Stadt "," State ZipCode. Das "" in diesem Beispiel soll zeigen, wo die übereinstimmenden Zeichen in die Zeichenfolge fallen.Rückgabe Stadt und Staat von String

Ich habe mit substr und strpos herumgespielt, aber aufgrund meiner Limit Erfahrung kann es nicht scheinen, um es zur Arbeit zu bringen. Ich schreibe eine Funktion, um die Adresse zu nehmen und nur die Stadt und den Staat zurückzugeben.

$str needs to be populated with the MeetingAddress data 
$from = "#xD;"; - this is always before the city 
$to = ","; - this is after the city 
echo getStringBetween($str,$from,$to); 
function getStringBetween($str,$from,$to) 
{ 
$sub = substr($str, strpos($str,$from)+strlen($from),strlen($str)); 
return substr($sub,0,strpos($sub,$to)); 
} 

Hier ist ein genaues Beispiel dafür, was zurückgegeben wird.

 <d:MeetingAddress>44045 Five Mile Rd&#xD; 
     Plymouth, MI 48170-2555</d:MeetingAddress> 

Hier ist ein zweites Beispiel:

 <d:MeetingAddress>PO Box 15526&#xD; 
     Houston, TX 77220-5526</d:MeetingAddress> 
+2

Beitrag ein genaues Beispiel für die Zeichenfolge aus der API zurückgegeben. – AbraCadaver

+0

Wo ist die Zeichenfolge? Geben Sie ein Beispiel für eine Antwort, die Sie erhalten .. –

+0

Ich habe die Antwort auf die Frage angehängt. Vielen Dank! – Johanna

Antwort

0

Sie können tun, wie unten

$string = '44045 Five Mile Rd&#xD;Plymouth, MI 48170-2555'; 

list($address,$cityAndState) = explode('#xD;',$string); 
list($city,$state) = explode(',',$cityAndState); 
echo $address; 
echo $city; 
echo $state; 
+1

Dieser Code ist so schön, dass es mich ein wenig tränenden Augen bekommt! : D Danke @vishnu! – Johanna

0

einfach explode() Funktion:

$str = '<d:MeetingAddress>44045 Five Mile Rd&#xD;Plymouth, MI 48170-2555</d:MeetingAddress>'; 
$tmp = explode(';', $str); 
$details = explode(',',$tmp[1]); 
$details[1] = substr(trim($details[1]),0,2); 
var_dump($details); 

Ausgang:

Array 
(
    [0] => Plymouth 
    [1] => MI 
) 
1
$str = "<d:MeetingAddress>44045 Five Mile Rd&#xD;Plymouth, MI 48170-2555</d:MeetingAddress>"; 
preg_match('/&#xD;(.*),(.*) /', $str, $matches); 

$matches[1] ist die Stadt, $matches[2] ist der Zustand

+1

kurz und elegant, nett! +1 – mitkosoft

Verwandte Themen