| Autor | Zpráva | ||
|---|---|---|---|
| TrueFriend Profil |
#1 · Zasláno: 30. 9. 2006, 02:45:56
Prosím, poradil by někdo, jak získat hodnotu z jiného textového souboru?
Jde mi o to, abych mohl vytáhnout hodnotu "26" ze soubor.txt scriptem v index.php Tu hodnotu mění zase jiný soubor. Jedná se o counter a chtěl bych zobrazit souborem index.php jen tu hodnotu "26" a nic víc. Jestli by mi někdo neporadil, jakou funkci použít, nebo neodkázal na nějaký hotový script. Jsem dost lama na tohle, zatím jsem jen dokázal soubor získat, ale nevím jak na tu hodnotu. index.php: $obsah = file_get_contents('soubor.txt'); soubor.txt: "totalvisits" => 112, "totalcount" => 26, "ext" => |
||
| tiso Profil |
#2 · Zasláno: 30. 9. 2006, 09:59:01
Ak to vážne chceš, tak cez regulárne výrazy alebo substr vytiahneš správnu časť reťazca, ale na jeden krát to nebude... Jednoduchšie by bolo zmeniť formát súboru, napríklad:
totalvisits#112 totalcount#26 a potom použiť file, explode a nájdeš to hneď. Pokiaľ by sa Ti počet a poradie prvkov v súbore nemenil, tak Ti stačí ukladať iba tie číselné hodnoty do riadkov (stačí ti len file), alebo len do jedného (112#26#1 a potom to načítať, cez explode rozdeliť) a vybrať prvok ktorý chceš |
||
| TrueFriend Profil |
#3 · Zasláno: 30. 9. 2006, 16:29:26 · Upravil/a: TrueFriend
Děkuju za radu, ale přesto v tom dost plavu :(
Potřeboval bych to ponechat v tom formátu co jsem psal. Stále to zkouším nějak naprogramovat. Zatím jsem zkoušel toto, to sice funguje, ale nevím jak zadat ty znaky " => aby mi je PHP vzalo. Index.php: <?php $sText = file_get_contents('access.txt'); $sStart = 'totalcount'; $sEnd = ','; $sVysledek = StrihaniString ($sStart, $sEnd, $sText); function StrihaniString ($sStart, $sEnd, $sText){ $sBuffer= StandartString (Trim($sText)); $sStart= StandartString (Trim($sStart)); $sEnd= StandartString (Trim($sEnd)); $pattern ='/'.$sStart.'(.*)'.$sEnd.'/i'; preg_match_all($pattern, $sBuffer, $pole); $sBuffer= SubStr(Trim($sText), StrPos($sBuffer, $pole[1][0] ,0), StrLen($pole[1][0])); return $sBuffer; } function StandartString ($sBuffer){ //Tato funkce odstrani diakritiku a velka pismena prevede na mala... $sBuffer=StrTr($sBuffer,"áÁéÉíÍóÓúÚůŮýÝěĚšŠčČřŘžŽťŤďĎňŇQWERTYUIOPASDFG HJKLZXCVBNM","aaeeiioouuuuyyeessccrrzzttddnnqwertyuiopasdfghjklzxcvbnm "); return $sBuffer; } echo $sVysledek; ?> access.txt: "totalvisits" => 112, "totalcount" => 26, |
||
| pavel prochazka.zde.cz Profil * |
#4 · Zasláno: 30. 9. 2006, 20:50:24
co treba zikate na toto:
<?php $sText = '"totalvisits" => 112, "totalcount" => 26, "ext" =>'; $sVysledek = StrihaniString ($sText); NajdiData($sVysledek); echo "<br><br><u>To je vse </u>:)"; function NajdiData ($sVysledek) { for ( $a=0; $a < Count($sVysledek);){ $sBufferA= explode("=>", Trim($sVysledek[$a])); echo "Nazev promenne: ".$sBufferA[0]; echo " Hodnota promenne: ".$sBufferA[1]. "<br>"; $a++; } } function StrihaniString ($sText){ $sBuffer= StandartString (Trim($sText)); $sBuffer = Preg_Replace ('(["])', '', $sBuffer); $sBuffer = Preg_Replace ('([\r\n\h])', '', $sBuffer); $sBuffer= explode(",", $sBuffer); return $sBuffer; } function StandartString ($sBuffer){ $sBuffer=StrTr($sBuffer,"áÁéÉíÍóÓúÚůŮýÝěĚšŠčČřŘžŽťŤďĎňŇQWERTYUIOPASDFG HJKLZXCVBNM","aaeeiioouuuuyyeessccrrzzttddnnqwertyuiopasdfghjklzxcvbnm "); return $sBuffer; } ?> |
||
| pavel prochazka.zde.cz Profil * |
#5 · Zasláno: 30. 9. 2006, 20:53:44
a nebo uspornejsi kod :)
<?php $sText = '"totalvisits" => 112, "totalcount" => 26, "ext" =>'; $sBuffer = Preg_Replace ('(["])', '', $sText); $sBuffer = Preg_Replace ('([\r\n\h])', '', $sBuffer); $sBuffer= explode(",", $sBuffer); for ( $a=0; $a < Count($sBuffer);){ $sBufferA= explode("=>", Trim($sBuffer[$a])); echo "Nazev promenne: ".$sBufferA[0]; echo " Hodnota promenne: ".$sBufferA[1]. "<br>"; $a++; } echo "<br><br><u>To je vse </u>:)"; ?> |
||
| TrueFriend Profil |
#6 · Zasláno: 30. 9. 2006, 21:01:41
Díky moc... fakt moc díky.
Zkouším to trochu poupravit, aby to šlo načítat z externího souboru... zatím se nedaří. |
||
| TrueFriend Profil |
#7 · Zasláno: 1. 10. 2006, 04:10:41
Tak sice je to pro jeden řádek dobré, ale pokud to je obsažené v souboru, tak to vypisuje každý řádek:
Nazev promenne: 0 Hodnota promenne: |
||
| TrueFriend Profil |
#8 · Zasláno: 1. 10. 2006, 04:39:44
Vyřešeno: nakonec jsem to rozpitval na dva soubory a hodnouty jsou volány jen pomocí include do hlavního souboru.
totalcount.php <?php $scountText = file_get_contents('access.php'); $scountStart = 'totalcount'; $scountEnd = ','; $scountVysledek = StrihaniCountString ($scountStart, $scountEnd, $scountText); function StrihaniCountString ($scountStart, $scountEnd, $scountText){ $scountBuffer= StandartCountString (Trim($scountText)); $scountStart= StandartCountString (Trim($scountStart)); $scountEnd= StandartCountString (Trim($scountEnd)); $pattern ='/'.$scountStart.'(.*)'.$scountEnd.'/i'; preg_match_all($pattern, $scountBuffer, $pole); $scountBuffer= SubStr(Trim($scountText), StrPos($scountBuffer, $pole[1][0] ,0), StrLen($pole[1][0])); return $scountBuffer; } function StandartCountString ($scountBuffer){ //Tato funkce odstrani diakritiku a velka pismena prevede na mala... $scountBuffer=StrTr($scountBuffer,"áÁéÉíÍóÓúÚůŮýÝěĚšŠčČřŘžŽťŤďĎňŇQWERT YUIOPASDFG HJKLZXCVBNM","aaeeiioouuuuyyeessccrrzzttddnnqwertyuiopasdfghjklzxcvbnm "); return $scountBuffer; } $scountVysledekOK = SubStr ("$scountVysledek", 5); echo $scountVysledekOK; ?> totalvisits.php <?php $svisText = file_get_contents('access.php'); $svisStart = 'totalvisits'; $svisEnd = 'totalcount'; $svisVysledek = StrihaniVisString ($svisStart, $svisEnd, $svisText); function StrihaniVisString ($svisStart, $svisEnd, $svisText){ $svisBuffer= StandartVisString (Trim($svisText)); $svisStart= StandartVisString (Trim($svisStart)); $svisEnd= StandartVisString (Trim($svisEnd)); $pattern ='/'.$svisStart.'(.*)'.$svisEnd.'/i'; preg_match_all($pattern, $svisBuffer, $pole); $svisBuffer= SubStr(Trim($svisText), StrPos($svisBuffer, $pole[1][0] ,0), StrLen($pole[1][0])); return $svisBuffer; } function StandartVisString ($svisBuffer){ //Tato funkce odstrani diakritiku a velka pismena prevede na mala... $svisBuffer=StrTr($svisBuffer,"áÁéÉíÍóÓúÚůŮýÝěĚšŠčČřŘžŽťŤďĎňŇQWERTYUIO PASDFG HJKLZXCVBNM","aaeeiioouuuuyyeessccrrzzttddnnqwertyuiopasdfghjklzxcvbnm "); return $svisBuffer; } $svisVysledekOK = SubStr ("$svisVysledek", 5, -4); echo $svisVysledekOK; ?> Sice to nelibě zatíží server, ale jak jsem psal, jsem lama a jinak to neumím... |
||
| pavel prochazka.zde.cz Profil * |
#9 · Zasláno: 1. 10. 2006, 07:52:11
pokud ti to nefunguje, tak si ten php kod krokuj, a hned uvidis zda promenne obsahuji to co maji, pripadne co je potreba poopravit aby to fungovalo.....
|
||
| pavel prochazka.zde.cz Profil * |
#10 · Zasláno: 1. 10. 2006, 07:53:19
pokud to nejsi schopny udelat, tak me posty ten soubor a ja to na ten soubor najak namogluji :)
|
||
| TrueFriend Profil |
#11 · Zasláno: 1. 10. 2006, 09:36:57
děkuju.
access.txt (access.php) <?php $access = array( "time" => array( "reset" => 1159627942, "last" => 1159630018, "hour" => array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 ), "wday" => array( 0, 0, 0, 0, 0, 0, 2 ), "day" => array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 ), "month" => array( 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ) ), "page" => array( "index" => array( "count" => 2, "uri" => "/" ) ), "stat" => array( "totalvisits" => 112, "totalcount" => 26, "ext" => array( "cz" => 2 ), "browser" => array( "firefox" => 2 ), "os" => array( "windowsxp" => 2 ) ), "host" => array( "bluetone.cz" => 2 ), "bbc048b" => 1 ); ?> |
||
| pavel prochazka.zde.cz Profil * |
#12 · Zasláno: 1. 10. 2006, 09:54:29
a co stim mam delat, me to udela jen jakousi strukturu $access.
|
||
| TrueFriend Profil |
#13 · Zasláno: 1. 10. 2006, 10:08:34
samotný PHP využívá jen další soustava scriptů pro zápisy, a úpravy... sám o sobě není nijak funkčním.
Přípanu PHP jsem zvolil proto, aby nebylo snadné se do souboru dostat. čeho chci dosáhnout je to, aby nový script dokázal z access.php získat hodnoty totalvisits a totalcount. Původně jsem chtěl právě tou funkcí ze začátku mého přispívání tyto hodnoty získat tím "vyříznutím hodnot", proto to na tom řádku končí za číslem 26 čárkou, ale moc mi to neusnadnilo. |
||
| pavel prochazka.zde.cz Profil * |
#14 · Zasláno: 1. 10. 2006, 10:16:13
Vsak mas vsechno v $access strukture...... Jen si podivej kde to mas ulozene a je to.....
|
||
| TrueFriend Profil |
#15 · Zasláno: 1. 10. 2006, 10:23:02
Jenže já právě nevím jak to udělat... nebo jak to z toho dostat... když to chci dostat, tak mi to na finální stránce píše pak chybu "Array".
|
||
| pavel prochazka.zde.cz Profil * |
#16 · Zasláno: 1. 10. 2006, 10:27:58
$nTotalVisits= $access[stat][totalvisits];
$nTotalCount= $access[stat][totalcount]; |
||
| TrueFriend Profil |
#17 · Zasláno: 1. 10. 2006, 10:30:15
už vím..
echo ($access['stat']['totalcount']); |
||
| pavel prochazka.zde.cz Profil * |
#18 · Zasláno: 1. 10. 2006, 10:31:01
proste jen naadresuj tu pozadovanou promenno. To je to co se ma na php neliby vsechny promenne jsou VARIABE! A pak se tu kazdy trapi proc to nefunguje, ale pokazde je potrena pristupovat k promennim jako k poli. a nebo pouzit madarskou notifikaci a tu zasadne dodrzovat a je po problemech... Proto ty prvni mala pismenka na zacaktu kazde promenne...
|
||
| TrueFriend Profil |
#19 · Zasláno: 1. 10. 2006, 10:39:17
tak tohle už jde... ale narazil jsem na problém.
Jak ten soubor access.php "natáhnout" do toho souboru, ve kterém chci ty údaje vypsat? zkoušel jsem to přes file_get_contents, ale bez úspěchu. Poradil bys ještě prosím? |
||
| pavel prochazka.zde.cz Profil * |
#20 · Zasláno: 1. 10. 2006, 10:58:33
co treba:
if ((file_exists(access.php))) { if (@!require(access.php)) { exit; } prvni podminka zkontroluje zda soubor acces.php existuje, pokud ano, tak ho funkce require nacte.... Toto dej na zacatek scriptu. |
||
| TrueFriend Profil |
#21 · Zasláno: 1. 10. 2006, 11:10:56
píše to chybu:
Parse error: syntax error, unexpected $end a na řádku chyby je jen znak ukončení PHP: ?> |
||
| pavel prochazka.zde.cz Profil * |
#22 · Zasláno: 1. 10. 2006, 11:15:55
posly cely kod toho jak to mas zmoglovany :)
|
||
| TrueFriend Profil |
#23 · Zasláno: 1. 10. 2006, 11:16:57
$url = "access.php";
if ((file_exists($url))) { if (@!require($url)) { exit; } $nTotalVisits = $access[stat][totalvisits]; $nTotalCount = $access[stat][totalcount]; print $nTotalVisits; |
||
| TrueFriend Profil |
#24 · Zasláno: 1. 10. 2006, 11:18:15 · Upravil/a: TrueFriend
zkoušel jsem i:
$url = "access.php"; if ((file_exists($url))) { if (@!require($url)) { $nTotalVisits = $access[stat][totalvisits]; $nTotalCount = $access[stat][totalcount]; } else { echo $nTotalVisits; exit; } ale dostal jsem tu samou chybu... |
||
| pavel prochazka.zde.cz Profil * |
#25 · Zasláno: 1. 10. 2006, 11:22:06
vis kde mas chyby?
co treba dokoncit prikaz IF :) treba takto :) <?php if ((file_exists(access.php))) { if (@!require(access.php)) { exit; } $nTotalVisits= $access[stat][totalvisits]; $nTotalCount= $access[stat][totalcount]; echo "prvni promenna: ". $nTotalVisits . "<br>druha promenna: ". $nTotalCount; echo "<br><br><u>To je vse </u>:)"; } ?> |
||
| TrueFriend Profil |
#26 · Zasláno: 1. 10. 2006, 11:24:11
Funguje to... díky moc. Díky :)
|
||
|
Časová prodleva: 19 let
|
|||
Toto téma je uzamčeno. Odpověď nelze zaslat.
0