[PHP] functies samenvoegen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
Hi,

Ik ben momenteel bezich met een script dat informatie van verschillende webpagina's haalt. Dit is opzich geen probleem. Behalve dat ik iedere functie geschreven heb bijna zonder variable, ik heb nu dus even veel functies (die allemaal gehoorlijk gelijk zijn) als webpagina waarvan ik de informatie moet halen. Totaal worden het dus aardig wat functions

Wat ik dus wilde is 1 functie maken waar ik veel variable in pomp, die uit een array gehaald worden, zodat ik dus slechts 1 functie overhoud. Op zich is dit niet zo'n probleem op het feit na dat sommige stukken text die zijn opghaald op verschillende manieren veranderd moeten worden, dus moeten er verschillende functies aangeroepen worden.

hier volgen twee functies die ik wil samenvoegen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function charts_dutch() {
global $db;
$fd = fopen("http://www.wanadoo.nl/top40/charts/index_1.html", "r" );
while (!feof ($fd)) {
     $buffer .= fgets($fd, 4096);
}
ereg ("<b>Top 40</b> ([0-9]{2})ste jaargang nummer ([0-9]{1,2})", $buffer, $issue);
preg_match_all ("'<td bgcolor=#([A-Z0-9]{6})><b>(.*?)</b> - ([^\/]+) 'is", $buffer, $artisttrack);
for ($i = 0; $i < 40; $i++) {
$artistarray[$i] = str_replace("Ft.", "ft.", ucwords(str_replace(" <img", "", $artisttrack[3][$i])));
$trackarray[$i] = ucwords($artisttrack[2][$i]);
}
if (sizeof($trackarray) != sizeof($artistarray) OR sizeof($artistarray) != 40) {
return false;
} else {
$spidered = $db->query_first("SELECT count(*) AS count FROM ms_charts WHERE issueweek = ". $issue[2] ." AND issueyear = ". msdate("Y", time()) ." AND chartname = 'dutch'" );
if ($spidered[count] == 0) {
$db->query("INSERT
     INTO ms_charts (chartname, issueweek, issueyear, artists, tracks)
     VALUES ('dutch', $issue[2], ". msdate("Y", time()) .", '". addslashes(implode("||", $artistarray)) ."', '". addslashes(implode("||", $trackarray)) ."')" );
return true;
} else {
return false;
}
}
}


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function charts_german() {
global $db;
$fd = fopen("http://www.mtv.de/hitlistgermany/index.php?historie=,,,Home,Charts&groupie=42&", "r" );
while (!feof ($fd)) {
     $buffer .= fgets($fd, 4096);
}
ereg ("G&uuml;ltig ab ([0-9]{2}).([0-9]{2}).([0-9]{4})</td>", $buffer, $issue);
$week = date("W", mktime (0, 0, 0, $issue[2], $issue[1], $issue[3]));
preg_match_all ("'[img]""\"../_shared/leer.gif\"[/img](<b>|)(.*?)(</b>|)</div></td>
     <td background=\"\"valign=\"top\"><div id=\"text\">(.*?)</div></td>'is", $buffer, $artisttrack);
for ($i = 0; $i < 100; $i++) {
$artistarray[$i] = ucwords($artisttrack[2][$i]);
$artistarray[$i] = str_replace("Feat.", "ft.", $artistarray[$i]);
$trackarray[$i] = ucwords($artisttrack[4][$i]);
}
if (sizeof($trackarray) != sizeof($artistarray) OR sizeof($artistarray) != 100) {
return false;
} else {
$spidered = $db->query_first("SELECT count(*) AS count FROM ms_charts WHERE issueweek = ". $week ." AND issueyear = ". $issue[3] ." AND chartname = 'german'" );
if ($spidered[count] == 0) {
$db->query("INSERT
     INTO ms_charts (chartname, issueweek, issueyear, artists, tracks)
     VALUES ('german', $week, $issue[3], '". addslashes(implode("||", $artistarray)) ."', '". addslashes(implode("||", $trackarray)) ."')" );
return true;
} else {
return false;
}
}
}


Hoe kan ik dit het best aanpakken?

Thanks,
Martin

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Zoek eerst de overeenkomsten op, als je die hebt gevonden kan je elk deel die overeenkomt als een aparte functie gaan herschrijven, waardoor je in deze twee functies alleen die functies hoeft aan te roepen op het overeenkomstig gedeelte. Daardoor zal je makkelijk kunnen bepalen hoe je exact deze twee functies kan samenvoegen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
PHP:
1
2
$artistarray[$i] = str_replace("Ft.", "ft.", ucwords(str_replace(" <img", "", $artisttrack[3][$i]))); 
$trackarray[$i] = ucwords($artisttrack[2][$i]);
en
PHP:
1
2
3
$artistarray[$i] = ucwords($artisttrack[2][$i]); 
$artistarray[$i] = str_replace("Feat.", "ft.", $artistarray[$i]); 
$trackarray[$i] = ucwords($artisttrack[4][$i]);
moeten dan dus aparte functies worden?