Adat kinyerése és cseréje
Sziasztok.
Szeretnék segítséget kérni az alábbi problémám megoldásához.
Sajnos nem vagyok PHP-ben jártas, idáig is egy ismerősöm segített eljutni, de sajnos manapság ő sem ér rá, így gondoltam hozzátok fordulok.
Adott egy xml struktúra melyből egy php scriptel nyerek ki adatokat a megfelelő sorokból. Szeretném elérni, hogy az egyik sorból kinyert adatot (ez az adat vagy 0 vagy 1) lecserélné echo-záskor arra az értékre amelyet én párosítok a két lehetséges adathoz. Egyszerűbben: Ha 0 akkor ne 0-át írjon ki hanem A betűt és ha 1 akkor ne 1-et hanem H betűt.
A kód (részlete) amivel dolgozok az alábbi:
Ez olvassa ki az adott sor adott karakterei közül a számomra lényeges információt.
Az "echo $t_online" vagy 0-át vagy 1-et eredményez.
Szeretném ha "echo $t_online" használatakor 0 esetében A-t illetve 1 esetében H-t kapnék eredményül.
Köszönöm szépen előre is a segítségeteket.
Üdv:
amORf
■ Szeretnék segítséget kérni az alábbi problémám megoldásához.
Sajnos nem vagyok PHP-ben jártas, idáig is egy ismerősöm segített eljutni, de sajnos manapság ő sem ér rá, így gondoltam hozzátok fordulok.
Adott egy xml struktúra melyből egy php scriptel nyerek ki adatokat a megfelelő sorokból. Szeretném elérni, hogy az egyik sorból kinyert adatot (ez az adat vagy 0 vagy 1) lecserélné echo-záskor arra az értékre amelyet én párosítok a két lehetséges adathoz. Egyszerűbben: Ha 0 akkor ne 0-át írjon ki hanem A betűt és ha 1 akkor ne 1-et hanem H betűt.
A kód (részlete) amivel dolgozok az alábbi:
if (strstr($sor, $online[0]) && strstr($sor, $online[1])&&($sorszam==8))
$t_online = str_replace($online, "", $sor);
$t_online = str_replace($online, "", $sor);
Ez olvassa ki az adott sor adott karakterei közül a számomra lényeges információt.
Az "echo $t_online" vagy 0-át vagy 1-et eredményez.
Szeretném ha "echo $t_online" használatakor 0 esetében A-t illetve 1 esetében H-t kapnék eredményül.
Köszönöm szépen előre is a segítségeteket.
Üdv:
amORf
echo $t_online == 0 ? 'A' :
:(
Sajnos nem működik úgy ahogyan én elképzeltem.
Mind a két esetben az eredmény "H".
Szeretném azt elérni, hogy "echo $t_online" lefutásakor az eredmény 0 esetében A illetve 1 esetében H lenne.
Így működik:
Az xml struktúrában így helyezkednek el az adatok:
<online>0</online>
<valami>32423</valami>
A "0" egy változó mely vagy 1 vagy 0 lehet.
Tehát a fenti idézetben lévő sor olvassa ki a két tag közül a lényeget (1-et vagy 0-át).
Az "echo $t_online" parancsal ki is olvassa helyzettől függően a 0-át vagy az 1-et.
Ezekhez az értékekhez szeretném a fent említett módon párosítani a betűket.
Ne haragudjatok, de nem tudom érthetőbben leírni. :S
Lemaradt a zárójel
Vagy 1-et vagy 0-át ír.
Sajnos még mindig nem jó. Az eredmény vagy 1 vagy 0. A betűk nincsenek sehol :(
Nézd meg a $t_online hosszát!
(pl. szóköz, tabulátor)
Amennyire értettem, hogy mit
$tomb = file("http://barmi.hu/akarmi.php");
$online = array("<online>","</online>");
$sorszam = -1;
foreach ($tomb as $sor) {
$sorszam++;
if (strstr($sor, $online[0]) && strstr($sor, $online[1])&&($sorszam==8))
$t_online = str_replace($online,"", $sor);
}
echo $t_online == '0' ? 'A' : ($t_online == '1' ? 'H' : $t_online);
?>
Esetleg nem lehetne megoldani ezt "if" és "else" bevonásával?
Például ha $t_online egyenlő 0-val akkor legyen egyenlő A-val. Egyéb esetben pedig H-val.
Vagy más megközelítésből: Ha $t_online nem egyenlő 1-el akkor legyen egyenlő A-val egyéb esetben pedig H-val.
Még egyszer mondom nem értek ehez :S
Nagyon szépen köszönöm az eddigi munkádat is.
$xml =
Egyrészt lásd Poetro
Szeretném megtartani az
Lefuttattam a "var_dump($t_online);" ot és az eredmény az alábbi:
string(6) " 0 "
Ezek szerint nem csak "0" az adat önmagában hanem szóköz vagy valami hasonló is van mellette? :O Bocsi ha hülyeséget írtam :D
Igen: 6 byte-os a változód,
Használd a trim függvényt, amikor értéket adsz a $t_online-nak!
Köszönöm a választ. Esetleg a
Esetleg a megvalósításához is kaphatnék egy kis segítséget? Tudom fárasztó lehet a hozzá nem értő emberek nyűgjeit bogarászni, de tényleg fontos lenne.
Ami adott:
....
if (strstr($sor, $online[0]) && strstr($sor, $online[1])&&($sorszam==11))
$t_online = str_replace($online,"", $sor);
....
echo $t_online == '0' ? 'A' : ($t_online == "1" ? "H" : $t_online);
....
Kicsit jobban megnéztem az eredményt és szerintem 5db szóköz van a 0 ill. az 1 előtt.
Ebben az esetben mi lenne a teendőm? Lennétek olyan kedvesek, hogy leírjátok miként módosulna a kód?
Köszönöm.
$t_online =
Nagyon szépen köszönöm
Áruld el...
$t_online
változó értékétől függően nekem vagyA
-t vagyH
-t ír ki. Az a gyanúm, hogy a$t_online
értéke valami egészen más, mondjuk0</online>
...
Szerintem a legegyszerűbb
echo ($t_online?'H':'A');
Már ha jól értem a problémádat...
----
fél perccel lemaradtam... :-)