Kom ihåg mig?
Home Menu

Menu


Nybörjarhjälp regular expression

Ämnesverktyg Visningsalternativ
Oläst 2005-01-30, 23:07 #1
Tvartom Tvartom är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 86
Tvartom Tvartom är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 86
Hej!
Är ingen höjdare på regular expression så jag undrar om nån kan visa hur man skriva för att söka igenom och returnera samtliga länkar från ett html-dokument som skulle kunna vara skrivna av följande PHP-kod:

Kod:
<?PHP
echo("<a href=\"javascript:displayMessage('".$msgid."', ".$fm.");\" class='lank2'>".$rubrik."&raquo;</a>");
?>
Jag vill alltså ha ut $msgid, $fm och $rubrik från sidan,
gärna i en array som
Kod:
array(
0 => array("msgid" => ..., "fm" => ..., "rubrik" => ...),
1 => array("msgid" => ...,...)
...
);
för alla poster i html-filen.
(det räcker visserligen med siffer-keys i array:en om det är lättare)

$msgid är en 22-siffrigt sifferkod.
$fm är 0 eller 1
$rubrik är en textsträng med godtycklig längd!
Exempel på några rader ur html-dokumentet:
Kod:
<html>
blabla
<a href="javascript:displayMessage('1096471958673919927738', 0);" class='lank2'>Tryck här&raquo;</a> blabla
blabla<a href="javascript:displayMessage('1096471870257651289544', 0);" class='lank2'>En annan länk&raquo;</a>
</html>
Tacksam för svar!
Tvartom är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-01-31, 09:44 #2
anders.n anders.n är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 113
anders.n anders.n är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 113
Följande borde fungera...

Kod:
<?php

$input="<html>\r\nblabla\r\n<a href=\"javascript:displayMessage('1096471958673919927738', 0);\" class='lank2'>Tryck här&raquo;</a> blabla\r\nblabla<a href=\"javascript:displayMessage('1096471870257651289544', 0);\" class='lank2'>En annan länk&raquo;</a></html>";

$count = preg_match_all("/<a href=\"javascript:displayMessage\('([0-9]+)', ([0-9]+)\);\" class='lank2'>(.{1,40})&raquo;<\/a>/", $input, $matches);

print_r($matches);

for ($i=0;$i<$count;$i++)
{
    print "msgid: ".$matches[1][$i]."\n";
    print "fm: ".$matches[2][$i]."\n";
    print "rubrik: ".$matches[3][$i]."\n\n";
}

?>
Det ger resultatet:
Kod:
Array
(
  [0] => Array
    (
      [0] => <a href="javascript:displayMessage('1096471958673919927738', 0);" class='lank2'>Tryck här&raquo;</a>
      [1] => <a href="javascript:displayMessage('1096471870257651289544', 0);" class='lank2'>En annan länk&raquo;</a>
    )

  [1] => Array
    (
      [0] => 1096471958673919927738
      [1] => 1096471870257651289544
    )

  [2] => Array
    (
      [0] => 0
      [1] => 0
    )

  [3] => Array
    (
      [0] => Tryck här
      [1] => En annan länk
    )

)
msgid: 1096471958673919927738
fm: 0
rubrik: Tryck här

msgid: 1096471870257651289544
fm: 0
rubrik: En annan länk
Dock så är ju den regexpen väldigt strikt och känslig för ändringar i länken.. (andra former av whitespace, omdöpta funktionsnamn/css-klasser, blah, blah...) Nu har den även en gräns på 40 tecken i rubriken..
anders.n är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017