Toon posts:

[php] 2 fopen vraagjes

Pagina: 1
Acties:

Verwijderd

Topicstarter
ok..misschien zijn deze vragen echt te dom maar ik kom er ff niet uit |:(

dit is mijn (uitgekleede) code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
$GrabURL = "http://url"; 
$GrabStart = "plaatje1.gif";
$GrabEnd = "</a>.gif";

$file = fopen("$GrabURL", "r");

$rf = fread($file, 20000);

$grab = eregi("$GrabStart(.*)$GrabEnd", $rf, $printing);

fclose($file);


$fptr = fopen("test.dat","w"); 

fwrite($fptr,$printing[1]."\n"); 

fclose($fptr); 

?> 
?>

1. Waar en hoe maak in nou precies een if statement die checkt of het woord plaatje1.gif voorkomt in de source van de pagina die ik wil fopen. Dus zo ja ga door, zo nee "vette pech".
2. Andere probleem is die </a>. Ik wil dat die begint met lezen bij plaatje1.gif en dan stopt bij de eerste </a> die hij tegenkomt. Dat doet die nu niet, hij begint bij plaatje2.gif en rost gewoon de hele file door tot de laatste </a>.

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op zaterdag 08 december 2001 17:08 schreef sjaak1000 het volgende:
1. Waar en hoe maak in nou precies een if statement die checkt of het woord plaatje1.gif voorkomt in de source van de pagina die ik wil fopen. Dus zo ja ga door, zo nee "vette pech".
strstr() is een mogelijkheid. Die geeft 0 terug als het er niet in voorkomt, en de plaats van het woord als het er wel in voorkomt. Het wordt dan iets als if(strstr($..., $...)) { etc. }

Zie ook de php-manual.
2. Andere probleem is die </a>. Ik wil dat die begint met lezen bij plaatje1.gif en dan stopt bij de eerste </a> die hij tegenkomt. Dat doet die nu niet, hij begint bij plaatje2.gif en rost gewoon de hele file door tot de laatste </a>.
Dat heeft te maken met de 'greediness' van ereg(i). Dat betekent dat wanneer je de volgende code hebt:
code:
1
[b]Hoi[/b] [b]hoi[/b]

met het pattern "\\[b\](.*)\\[/b\]" zoveel mogelijk in één keer zal pakken, dus de eerste [ b ] tot en met de laatste [ /b ].

In plaats van ereg(i) moet je preg_* gebruiken, daarmee kun je die 'greediness' uit zetten. Met preg_* zal het iets als
code:
1
$grab = preg_match_all("#$GrabStart(.*)$GrabEnd#si", $rf, $printing);

De syntax van preg_* is iets anders dan die van ereg. Zie ook deze pagina van de PHP-manual.

Verwijderd

Topicstarter
In plaats van ereg(i) moet je preg_* gebruiken, daarmee kun je die 'greediness' uit zetten. Met preg_* zal het iets als
code:
1
$grab = preg_match_all("#$GrabStart(.*)$GrabEnd#si", $rf, $printing);

De syntax van preg_* is iets anders dan die van ereg. Zie ook deze pagina van de PHP-manual.
het eerste deel is gelukt. maar dat preg_match_all vat ik nog niet en als ik die regel die jij hebt gegeven gebruik krijg ik als output "Array" i.p.v lappen text. Tips over hoe de code hierboven aan te passen zodat het wel werkt met preg_match_all is zeer welkom :)

Verwijderd

Topicstarter
heb hem al

echo $printing[0] [0];

dat werkt :)