Frågan 21 mars 2010 12:20 #1 Hej
Jag försöker med hjälp av preg_match() läsa ur allt mellan <body ..> och </body> från en htmldokument.
Har Googlat och hittat en del, men alla jag provat inkluderar själva bodytaggarna i träffen.
Såhär har jag gjort:
preg_match("/<body(.*)>(.*)<\/body>/s", $template, $foo);
print_r($foo);
Hur ska mönstret ovan se ut för att bodytaggarna ska exkluderas ?
Tack!
preg_match("/<body(.*)>(.*)<\/body>/s", $template, $foo);
echo $foo[2];
...kanske?
Nepp, print_r() skriver ju ut hela array'en och den får bara två värden, där 0 innehåller <body ..></body> och 1 hela dokumentet.
<?PHP
$template = '<body backgrund="css-sucks.bmp"><strong>mmlrmlrmr</strong></body>';
preg_match("/<body([^>]*)>(.*)<\/body>/s", $template, $foo);
print_r($foo);
Behövdes en liten ändring, men koden ovan ger mig:
Array
(
[0] => <body backgrund="css-sucks.bmp"><strong>mmlrmlrmr</strong></body>
[1] => backgrund="css-sucks.bmp"
[2] => <strong>mmlrmlrmr</strong>
)
Vilken timing, hittade precis det här på ett annat forum som för exakt det jag vill!
if (preg_match('~<body[^>]*>(.*?)</body>~si', $text, $body))
{
echo $body[1];
}
Tack ändå!
Samam idé som min ju. :)
Bara att den använder ~ som avslutningstecken (smart, då behöver man inte escapea / i </body>) och inkluderar i, som gör att uttrycket matchar både stora och små bokstäver.