webForumDet fria alternativet

RegExp: Hjälp med mönster

PHP

4 svar · 273 visningar · startad av Peeer

Medlem sedan mars 20025 907 inlägg
Frågan#1

Jag har en sträng med nyheter som ser ut som nedan. Jag vill helt enkelt (enkelt är kanske fel ord att använda) få ut en array som innehåller datumet, rubriken, texten samt url'en för alla nyheter. Går det att göra med ett enda mönster, eller ska jag försöka dela upp det på något sätt?

Obs: "enter"-slagen ni ser i koden nedan ska inte ingå i mönstret, strängen kommer vara ren från sådana specialtecken (hela strängen är mao på en enda lång rad).

2004-01-07<br><b><span class="header2">Rubrik1</span></b><br>
Text1<br><br>
<a href="t2.asp?p=1920&x=1&a=100314"><b>L&auml;s mer</b></a><br><br>

2004-01-06<br><b><span class="header2">Rubrik 2</span></b><br>
Text2<br><br>
<a href="t2.asp?p=1920&x=1&a=68287"><b>L&auml;s mer</b></a><br><br>

2003-12-22<br><b><span class="header2">Rubrik3</span></b><br>
Text3<br><br>
<a href="t2.asp?p=1920&x=1&a=99624"><b>L&auml;s mer</b></a><br><br>

//I den riktiga strängden finns det fler än dessa 3 nyheter som ska plockas ut.
Medlem sedan mars 20025 907 inlägg
#2

Ok, halvvägs. Har lyckats få fram ett mönster som matchar den första nyheten, men hur gör jag för att få ut alla nyheter?

preg_match('/(\d{4}-\d{2}-\d{2})<br><b><span class="header2">(.*?)<\/span><\/b><br>(.*?)<br><br><a href="(.*?)"><b>Läs mer<\/b><\/a><br><br>/is',$string,$temp);
print_r($temp);

//Ger outputen:
Array
(
    [0] => 2004-01-07<br><b><span class="header2">Rubrik1</span></b><br>Text1<br><br><a href="t2.asp?p=1920&x=1&a=100314"><b>Läs mer</b></a><br><br>
    [1] => 2004-01-07
    [2] => Rubrik1
    [3] => Text1
    [4] => t2.asp?p=1920&#x=1&a=100314
)

Följdfråga: Varför dyker det upp ett # mitt inne i url'en? Den finns inte i strängen från början, och den finns inte i $temp[0]
/r # syns viss inte när man presenterar innehållet här på wF heller, men om ni citerar mitt inlägg så ser ni att det har dykt upp ett # mellan &-tecknet och "x"

Medlem sedan mars 20025 907 inlägg
#3

Hmm, oj :r
preg_match_all() finns ju också. Tack och hej :)

Medlem sedan juli 2000297 inlägg
#4

\r: du hann före :(

Medlem sedan juli 2000297 inlägg
#5

(tryckte på citatknappen istl för redigera ;))

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)