|
| preg_match Fra : Morten Lehrmann |
Dato : 28-08-04 08:48 |
|
Jeg har et HTML-dokument i variablen $html og jeg vil have udtrukket alt fra
<html>
....
til og med
<body ... >
linien og lagt det ind i $head2body[0].
Jeg er kommet frem til:
if ( preg_match( "/[.\n]*<body.*$/mi", $html, $head2body ) ) {
echo $head2body[0];
....
men det giver nogle linieskift efterfulgt af <body ...>-linien, men uden:
<html>
<meta ...>
...
Hvor er det min kæde knækker? Jeg er vant til Perl - og det er svært at
overskue forskellene. I øvrigt: Kan jeg udtrække fra et HTML-dokument på en
nemmere måde (HTML-dokumentet er ikke nødvendigvis well-formed).
Server:
PHP Version 4.3.1
Apache/1.3.27
SuSE Linux 8.2
Mvh
Morten
| |
Bertel Lund Hansen (28-08-2004)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 28-08-04 10:21 |
|
Morten Lehrmann skrev:
>Jeg har et HTML-dokument i variablen $html og jeg vil have udtrukket alt fra
><html>
>...
>til og med
><body ... >
>linien og lagt det ind i $head2body[0].
<?
$html="\r\n<html>\r\n<title>Test</title>\r\n\r\n<body>\r\nKroppen\r\n</body>\r\n</html>\r\n";
$bodypos=strpos($html,"<body>");
$head2body=substr($html,0,$bodypos);
?>
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Morten Lehrmann (28-08-2004)
| Kommentar Fra : Morten Lehrmann |
Dato : 28-08-04 14:21 |
|
Bertel Lund Hansen wrote:
>$html="\r\n<html>\r\n<title>Test</title>\r\n\r\n
<body>\r\nKroppen\r\n</body>\r\n</html>\r\n";
> $bodypos=strpos($html,"<body>");
> $head2body=substr($html,0,$bodypos);
> ?>
Jamen, det var lige hvad jeg skulle bruge for at komme videre.
Jeg måtte udvide lidt, da de pågældende body-tags ofte er lange, fx:
<body lang=DA link=blue vlink=purple style='tab-interval:65.2pt'>
og da der er både store og små bogstaver (og stripos er
en PHP5 udvidelse!), så koden blev:
$htmls = strtolower( $html );
$bodypos = strpos( $htmls, "<body" );
$bodyendpos = strpos( $htmls, ">", $bodypos );
$head2body = substr( $html, 0, $bodyendpos+1 );
Mange tak for hjælpen.
Mvh
Morten
| |
|
|