[php] Preg match werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 13:48

Saven

Administrator

Topicstarter
Heyy Tweakers,

Ik ben bezig met iets te maken in PHP, en ik wil een 2 stukken tekst uit één stuk tekst halen.

Mijn code:
PHP:
1
$preg = preg_match($contents, "/^\<a href=\"(.*)\"\>Hier is (.*)\'s lijstje\<\/a>/", $matches)


Ik wil dus de link achterhalen met de naam van wie de lijst is. Maar mijn preg match werkt niet echt, en mijn ik kan ook nergens vinden hoe ik dit wél goed moet doen ;(

$contents is dus een hele lap html

Weet iemand hoe ik dit werkend kan krijgen? :) Thanks alvast

[ Voor 3% gewijzigd door Saven op 17-01-2011 18:04 ]


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 15:55
En jij denkt dat wij hiermee wat kunnen?

Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 13:48

Saven

Administrator

Topicstarter
Oh wacht, lang geleden dat ik hier een topic heb geopend :+

Error:
code:
1
Warning: preg_match() [function.preg-match]: Unknown modifier '<' in C:\wamp\www\list.php on line 23


Regel 23 is die prech match lijn ;)

[ Voor 9% gewijzigd door Saven op 17-01-2011 18:04 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

Kun je niet veel eenvoudiger de HTML in een DOM-element laden en dan middels DOMXPath de innerhtml van de <a> uitlezen?

Voorbeeldje
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
<?php
// to retrieve selected html data, try these DomXPath examples:

$file = $DOCUMENT_ROOT. "test.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($file);

$xpath = new DOMXpath($doc);

// example 1: for everything with an id
//$elements = $xpath->query("//*[@id]");

// example 2: for node data in a selected id
//$elements = $xpath->query("/html/body/div[@id='yourTagIdHere']");

// example 3: same as above with wildcard
$elements = $xpath->query("*/div[@id='yourTagIdHere']");

if (!is_null($elements)) {
  foreach ($elements as $element) {
    echo "<br/>[". $element->nodeName. "]";

    $nodes = $element->childNodes;
    foreach ($nodes as $node) {
      echo $node->nodeValue. "\n";
    }
  }
}
?>

[ Voor 70% gewijzigd door Matis op 17-01-2011 18:06 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 19-09 11:12
Waarom wil je hier regular expressions voor gebruiken, ik zou voor een XPath oplossing kiezen zoals Matis laat zien.

Trouwens dit doet me denken aan een quote (die ook een moderator hier heeft/had):
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

[ Voor 3% gewijzigd door Manuel op 17-01-2011 18:14 ]


Acties:
  • 0 Henk 'm!

  • iBasch
  • Registratie: Februari 2009
  • Laatst online: 14:34
Manuel schreef op maandag 17 januari 2011 @ 18:10:
Waarom wil je hier regular expressions voor gebruiken, ik zou voor een XPath oplossing kiezen.

Trouwens dit doet me denken aan een quote (die ook een moderator hier heeft/had):

[...]
Nog een mooie post hier:
http://stackoverflow.com/...ined-tags/1732454#1732454

Moraal van het verhaal; XPATH

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Afgezien van het feit dat preg_match eigenlijk niet de handige keuze is hiervoor (liever met een sgml parser).

Je hebt de parameters van preg_match omgedraaid ;)

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Params verkeerd om ja, kwestie van debuggen dus en gewoon de handleiding lezen of een goede IDE gebruiken (die had je de goede volgorde gewoon verteld tijdens het typen).

Overigens ben ik t eens met bovenstaanden dat je gewoon een dom parser moet pakken (xpath is zooo handig).
Pagina: 1