Wie extrahiert man Werte von String getrennt durch |extrahieren Werte von Srting getrennt durch | in php
hier ist meine Zeichenfolge
$var='foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
i
$foo=1478
$boo=7854
$ccc=74125
Wie extrahiert man Werte von String getrennt durch |extrahieren Werte von Srting getrennt durch | in php
hier ist meine Zeichenfolge
$var='foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
i
$foo=1478
$boo=7854
$ccc=74125
Natürlich würde jeder Körper schlagen die explode
Route:
$var = 'foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
foreach(array_filter(explode('|', $var)) as $e){
list($key, $value) = explode('=', $e);
${$key} = $value;
}
Auch ein anderer wäre Rohre, zu Ampersand zu konvertieren, so dass es mit parse_str
interpretiert werden kann:
parse_str(str_replace('|', '&', $var), $data);
extract($data);
echo $foo;
Beide würden das gleiche produzieren. Ich würde jedoch mit Variablen Variablen wegbleiben, es würde sich entscheiden, mit Arrays zu gehen.
Ich habe auch etwas wie zu dem ersten gemacht. –
@RivnatNasah eine andere Variante wäre, Regex zu verwenden 'preg_split ('/ \ | + /', $ var)' – Ghost
Das ist genial, ich liebe Regex, aber kann nicht tun. –
Explode die Zeichenfolge von |
speichern müssen und Sie werden den anderen Wert als Array erhalten, die durch |
getrennt ist. Fügen Sie jetzt die $
vor jedem Wert und echo sie, um zu sehen, was Sie wollen.
$var = 'foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
$arr = explode("|", $var);
$arr = array_filter($arr);
foreach($arr as $val){
echo "$".$val."<br/>";
}
Sie erhalten:
$foo=1478
$boo=7854
$bar=74125
$aaa=74125
$bbb=470
$ccc=74125
$ddd=1200
OR, wenn man sich in dem $foo
Variable gespeichert werden soll und zeigt den Wert nur dann tun Sie dies:
$var = 'foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
$arr = explode("|", $var);
$arr = array_filter($arr);
foreach($arr as $val){
$sub = explode("=", $val);
$$sub[0] = $sub[1];
}
echo $foo; //1478
Verwenden explode
Funktion des breche deine Saite.
$array = explode("|", $var);
print_r($array);
Sie PHP-Variable variable Konzept verwenden, um Ihr Ziel zu erreichen:
Versuchen Sie folgendes:
<?php
$var='foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
$vars=explode("|",$var);
foreach($vars as $key=>$value){
if(!empty($value)){
$varcol=explode("=",$value);
$varname=$varcol[0];
$varvalue=$varcol[1];
$$varname=$varvalue; //In this line we use $$ i.e. variable variable concept
}
}
echo $foo;
Ich hoffe, das funktioniert für Sie ....
Sie explode
verwenden können für |
mit array_filter
, um leere Elemente aus dem Array zu entfernen und das Ergebnis an array_map
mit einem Referenzarray zu übergeben.
Innerhalb Callback müssen Sie wieder explode
für =
und speichern Sie diese in ref-Array.
dort nach der Verwendung extract
zum Erstellen von Variablen.
$var='foo=1478|boo=7854|bar=74125|aaa=74125|bbb=470|ccc=74125|ddd=1200|';
$result = array();
$x = array_map(function($arr) use(&$result) {
list($key, $value) = explode('=', $arr);
$result[$key] = $value;
return [$key => $value];
}, array_filter(explode('|', $var)));
extract($result);
explodieren auf | –
mit der explode-Funktion zweimal, Was ist die Logik des Speicherns ??? Die ersten beiden sind verständlich, aber was ist mit der letzten? '$ c'? –
Es sieht so aus, als könntest du mit 'explode ('|', $ var) beginnen;' ... Aber du musst mehr Forschungsaufwand zeigen. –