webForumDet fria alternativet

preg_match() fråga

4 svar · 465 visningar · startad av joonas

joonasMedlem sedan juli 200135 inlägg
#1

tjenare!

har lite problem med denna funktion (är inte så vass på string patterns)

if (preg_match('/\<b class="ch"\>Runtime:\<\/b\> ([0-9]+ min)\<br\>/', $imdb_website, $hit))
        {
            return $hit[1];
        }
        else
        {
            return "fel";
        }

Den kod jag försöker få ut är runtime på en film, det avsnittet ser ut på följande sätt:

<b class="ch">Runtime:</b>
93 min 
<br>

Nån som ser felet i springpattern i funktionen?
Resultatet blir att det står fel iaf.

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Hej! :)

Du behöver inte escape:a '<' och '>'. Sedan bör det räcka med:

preg_match('/<b class="ch">Runtime:<\/b>(?:\s*)([0-9]+ min)/', $imdb_website, $hit)
joonasMedlem sedan juli 200135 inlägg
#3

Funkade kanon, tusen tack.

Du vet ingen bra sida där man kan lära sig lite mer om sånna där wildcards?

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Utöver PHP-manualen kan du kika på detta. Visserligen JavaScript, men syntax och semantik är lika ändå.

Glöm ej att acceptera som slutgiltigt svar (y)

salkciNMedlem sedan sep. 200619 inlägg
#5

du kan också använda assertions, ex:

preg_match('/(?<=runtime:<\/b>\r\n)\d+/is', $string, $hit);

värdet ligger i $hit[0]

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)