Toon posts:

[php]Regex probs

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo, ik ben een n00b die niets snapt van regexes. Maar nu wil ik wel alle hyperlinks uit een bestand filteren.
Dus dacht ik dat het zo kon met preg_match:

PHP:
1
preg_match_all('<A HREF="[.]</A>', $data, $matches);

Als ik dit doe krijg ik deze melding:
code:
1
Warning: No ending matching delimiter '>' found in C:\apache\htdocs\vkrip\vkrip.php on line 7


Dus dacht ik dat ik alles moest quoten:
PHP:
1
preg_match_all(preg_quote('<A HREF="[.]</A>'), $data, $matches);


maar dan krijg ik:
code:
1
Warning: Delimiter must not be alphanumeric or backslash in C:\apache\htdocs\vkrip\vkrip.php on line 7


Also, wat gaat hier verkeerd?
Links zien er als volgt uit:
code:
1
<A HREF="blaat.html">dit is een tekstje</A>

Verwijderd

lees eerst eens wat over regexepen op php.net ... en dan vooral bij de functie die gebruikt en pcre

Verwijderd

Topicstarter
Ja dat heb ik natuurlijk al lang gedaan. Niet dat ik die docs ook maar een heel klein beetje begrijp, maar okay.

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 20:19

Super_ik

haklust!

zoek ff naar voorbeelden op de php site en hiero dan

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Verwijderd

Topicstarter
Dat heb ik ookal gedaan. Waar het om gaat is dat ik die patterns niet begrijp. Ik snap niet hoe het werkt. Dat vind ik jammer.

Verwijderd

Een delimiter is dus een teken waarmee je bijvoorbeeld aangeeft wat nu precies het patroon is, en wat de pattern modifiers zijn.
Vaak wordt daarvoor een slash / gebruikt, maar soms is het handiger om een ander teken te nemen, zodat je geen escape characters hoeft te gebruiken. Aangezien in je patroon een slash staat kun je beter voor een uitroepteken of hekje kiezen bijvoorbeeld:

!patroon!
#patroon#is

Jij hebt nog geen delimiters, dus de engine denkt dat je het eerste teken als start delimiter hebt, een < dus. Dit is echter niet wat je wilt, dus zet even een paar tekens om je patroon heen die in HTML niet of zelden gebruikt worden.

Nog iets: waarom zet je die punt tussen vierkante haakjes?

(.*?)"> ipv [.] zou ik logischer vinden, al is een uitgebreider patroon waarschijnlijk nog beter.

Verwijderd

Topicstarter
Thanks, nu snap ik het. Het werkt.
Pagina: 1