Kezdőoldal » Számítástechnika » Weblapkészítés » PHP-ban hogyan tudok egy...

PHP-ban hogyan tudok egy adott szeveget bevinni és egy autómata fügvénykibányászó programot írni?

Figyelt kérdés

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...


2012. febr. 5. 18:08
 1/10 anonim ***** válasza:
69%
Úgy, hogy szorgalmasan olvasod a PHP (és általában a programozás) alapjairól szóló könyveket, fórumokat. Tii nem fogja helyetted megírni senki.
2012. febr. 5. 18:16
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
74%

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...!

2012. febr. 5. 21:07
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:

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.

2012. febr. 5. 22:02
 4/10 anonim ***** válasza:
Rendezett valamennyire az a txt? van valami értelmes delimiter valahol? Postolj be egy pár sort a forrásból...
2012. febr. 5. 22:24
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:

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.

2012. febr. 5. 22:36
 6/10 anonim ***** válasza:
Akkor szedd szét blokkokra preg_split()-tel valami értelemes delimiternél. Ha ez megvan, utána már cirkálhatsz a blokkban strpos() alapján. Elegánsan az ilyet belevágjuk egy rekurzív függvénybe, ami önmagát hívja a blokkok szétszedésére.
2012. febr. 5. 22:39
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

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

2012. febr. 5. 22:42
Hasznos számodra ez a válasz?
 8/10 A kérdező kommentje:

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

2012. febr. 6. 08:35
 9/10 anonim ***** válasza:

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.

2012. febr. 6. 11:06
Hasznos számodra ez a válasz?
 10/10 A kérdező kommentje:

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>

2012. febr. 6. 20:38

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!