PHP-ban hogyan tudok egy adott szeveget bevinni és egy autómata fügvénykibányászó programot írni?
van például egy összeírt lista egy txt-file-ban és abból akarok halmozott adatokat kigyűjteni.
kell egy függvény ami beolvassa ami beolvassa a szöveget.
aztán kell egy függvény ami kikeresi nekem egy előre meghatározott kifejezést pl "telefonszám" és az utána szereplő 11 számjegyből függvényt varázsol nekem pl így:
szöveg az pl így néz ki amit beolvas:
... blabla
név: sándor
telefonszám: 069012345678
... blabla
és ez a két függvényt kell kibányászni belőle:
$nev01=sándor
$telefonszam01=06901234567
a keresési műveletet meg addig ismétli amíg ki nem listázza az összes nevet és telefonszámot egymáshoz rendelve de azt már megoldom...
Jóbarát, nem nagy kicsit az arcod ahhoz képest, hogy elvárod a válaszolóktól, hogy helyetted dolgozzanak?
A program nem olyan, mint az alma, hogy szép éretten a fejedre pottyan, tanulni kell, hogy meg tudd írni. Ha meg azt szeretnéd, hogy mások kódoljanak neked felebaráti szeretetből, akkor kicsit hátrább az egerekkel...!
amit összebogarásztam internetről meg innen onnan
Ami a beolvasást csinálja elvileg az ez a függvény:
$beolvas= fopen("file.txt", "r");
kell egy keresőfügvény.
na most amikor találatot ér meg kellene határoznia hogy hanyadik sor hányadik oszlopban van amit keresünk
aztán van egy függvény ami meg tudja határozni hogy utánna mi következik adat:
$x01= a keresett kordináta
$x02=x01+11; mivel a telefonszám 11 számjegyű
$teloszam = substr($beolvas, $x01, $x02);
kell egy islmétlődő fügvény ami addig keres amíg az összes találatot ki nem listázta:
<?php
do {
itt elvégzi a keresést
print $name;
print $teloszam;
print "<br>";
$ciklus=$x02;
itt meg van az első találat és utána már nem az elejétől kezd keresni hanem az első találat után újra fojtatja a keresést.
++$ciklus;
} while ($ciklus < $file_vege);
?>
egyenlőre ennyi van meg.
magát a függvényt univerzálisan akarom felhasználni.
csak a keresés rész hiányzik, utána az már újabb kérdések lesznek a fórumon hogy pl a per jelet a kettőspontot, a szóközt is számításba vegye, de erre majd külön rákeresek. de vegyük úgy hogy rendezett file-ről van szó. és csak a találati kordinátákat akarom függvényesíteni.
például használnám weboldalak beolvasásárra adathalászat céljából, van aki pl csinál egy apróhirdetős oldalt úgy hogy más weboldalakból halássza ki neki egy PHP program a hirdetéseit. mivel egy Msql táblázat kimeneti eredménye, így rendezett adathalmazról van szó. csak be kell építeni függvényesítve a saját oldalamba.
megjegyzem, már az eleje se jó..
"Ami a beolvasást csinálja elvileg az ez a függvény:
$beolvas= fopen("file.txt", "r");"
meg a pacikislány álma...
$handle=fopen('file.nev','r');
$cucc=fread($handle,filesize... ...);
fclose(...);
Szándékosan nem írom meg, keresd ki. Haverod: php.net
amiket eddig vadásztam neten azok ilyesmik:
$beolvas= fopen(("file.txt"), "rt")or die("$fajlnev nem
nyitható meg");
while ( ! feof( $beolvas ))
{
$sor = fgets( $beolvas, 1024);
if(substr($sor,0,3) == "név")
{
$nev_01=substr($sor,4,20);
}
if(substr($sor,0,13) == "telefonszám: ")
{
$telefonszam=substr($sor,13,24);
}
print $nev."<br>";
print $telefonszam."<br>";
break;
}
fclose($beolvas);
-----------------------------------------------------
másik verzió:
$tomb = file("proba.xml");
$mintanev = array("név: ");
$mintateloszam = array("telefonszám: >");
foreach($tomb as $sor)
{
if (strstr($sor, $mintanev, 10))
$output01 = str_replace($mintanev, "", $sor);
}
foreach($tomb as $sor)
{
if (strstr($sor, $mintateloszam, 11))
$output02 = str_replace($mintateloszam, "", $sor);
}
print "<br><br>";
print "név: ".$output01;
print "<br><br>";
print "telefonszám: ".$output02;
print "<br><br>";
---------------------------
valamiért mégse működnek. easyPHP programot használok szerver szimulálásra. de dobálja a hibaüzeneteket elég rendesen. semmilyen értéket nem akar adni a függvényeknek
Nem csodálom, hogy dobálja az errmsg-t. Én még a hamutartót is... :) Ezért szakma a programozó...
Csak gyors ránézéssel: ha $nev_01-nek adsz éréket, akkor a $nev-et hiába iratod ki, másik változó (value meg NULL).
fgets-nél legyél biztos benne, hogy mi a line-end. Win-nél 0x0d 0x0a, linuxokon csak 0x0d, tehát trim().
Sorok beolvasásánál csak kritikus esetben használjuk a sor max. hosszának beállítását (eszi a memóriát), normál esetben legyen dinamikus. (lásd: php.net -> fgets)
if-ben nem vágunk string-et, helyette strpos...
While-ciklusban mit keres a break?
...és akkor ez még csak az első "kód" volt.
A második szinte totál zagyvaság. Ha XML-t akarsz feldolgozni, arra ott az xml-parser. str_replace mit keres ott? (egyébként meg a preg_replace játékkal jobban jársz). Szóval ez így katasztrófa, ne vasvillával akard egymás után dobálni az utasításokat, hanem ismerd meg a programozás alapjait, és keresd ki a neked megfelelő utasítást a manual-ból. Ez tanulás nélkül nem fog menni.
alkottam egy darabig de újabb elakadás hogy másodszorra nem akarja sehogy sem betölteni a tömböt nekem. egyszerre csak egy tömb lehet megnyitva vagy mi a szösz?
<html>
<head>
</head>
<body>
<?php
$haz = 1;
$id = 1;
$jo = 1;
$haz = $_GET['haz'];
$ciklus_vege = 12;
$ciklus = 1;
do {
if ($haz >= 26) $haz = 1;
switch($haz){
case 1: $kordinata="&x=8167&y=6257"; break;
case 2: $kordinata="&x=8167&y=6258"; break;
case 3: $kordinata="&x=8167&y=6259"; break;
case 4: $kordinata="&x=8167&y=6260"; break;
case 5: $kordinata="&x=8167&y=6261"; break;
case 6: $kordinata="&x=8167&y=6262"; break;
case 7: $kordinata="&x=8167&y=6263"; break;
case 8: $kordinata="&x=8167&y=6264"; break;
case 9: $kordinata="&x=8164&y=6260"; break;
case 10: $kordinata="&x=8164&y=6257"; break;
case 11: $kordinata="&x=8164&y=6258"; break;
case 12: $kordinata="&x=8164&y=6259"; break;
case 13: $kordinata="&x=8164&y=6260"; break;
case 14: $kordinata="&x=8164&y=6261"; break;
case 15: $kordinata="&x=8164&y=6262"; break;
case 16: $kordinata="&x=8164&y=6263"; break;
case 17: $kordinata="&x=8164&y=6264"; break;
case 18: $kordinata="&x=8162&y=6257"; break;
case 19: $kordinata="&x=8162&y=6258"; break;
case 20: $kordinata="&x=8162&y=6259"; break;
case 21: $kordinata="&x=8162&y=6260"; break;
case 22: $kordinata="&x=8162&y=6261"; break;
case 23: $kordinata="&x=8162&y=6262"; break;
case 24: $kordinata="&x=8162&y=6263"; break;
case 25: $kordinata="&x=8162&y=6264"; break;
default: $kordinata="&x=8167&y=6257"; break;
}
print "<br><br>";
print "következő házikó betöltődik";
$tomb = file(" [link]
$id = substr($tomb[7], 8, 7);
$jo = substr($tomb[13], 8, 1);
print "<br><br>";
print $id;
print "<br><br>";
print $jo;
print "<br><br>";
sleep(1);
$valaszfile = " [link]
print $valaszfile;
$valasz = file("$valaszfile");
$nyeremeny = substr($valasz[10], 9, -9);
print "<br><br>";
print $nyeremeny;
print "<br><br>";
sleep(1);
++$ciklus;
++$haz;
print "ciklus = ".$ciklus;
print "<br><br>";
} while ($ciklus < $ciklus_vege);
?>
</body>
</html>
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!