Problem med att hämta data med preg_match

PHP

1 svar · 397 visningar · startad av jonas18z

Medlem sedan okt. 200445 inlägg
Trådstart#1

<?
echo get_url_title("http://www.scandinavianphoto.se");

function get_url_title($url, $timeout = 2)
{
   $url = parse_url($url);

   if(!in_array($url['scheme'],array('','http')))
       return;

   $fp = fsockopen ($url['host'], ($url['port'] > 0 ? $url['port'] : 80), $errno, $errstr, $timeout);
   if (!$fp)
   {
       return;
       // echo "$errstr ($errno)<br>\n";
   }
   else
   {
       fputs ($fp, "GET /".$url['path'].($url['query'] ? '?'.$url['query'] : '')." HTTP/1.0\r\nHost: ".$url['host']."\r\n\r\n");
       $d = '';
       while (!feof($fp))
       {
           $d .= fgets ($fp,2048);

           
          if(preg_match('/(<h1>.*?<\/p>)(.*?)/s', $d, $m))

		   break;
       }
       fclose ($fp);

       return $m[3];
   }
}
?>

I koden på sidan finns det typ så här

<body> osv osv
.....
<p> bla bla bla</p>

<h1>abcabcabcab</h1>
<p> bla bla bla bla "bla bla bla bla bla bla bla bla bla" bla bla bla
bla bla bla bla bla bla bla bla bla "bla"
bla bla bla bla bla bla bla bla <br>
bla bla bla bla bla bla bla bla bla bla bla bla
</p>

Jag vill alltså hämta det stom står mellan </h1> tagen och </p>

Borde inte detta fungera?

Medlem sedan dec. 1999286 inlägg
#2

Testa det här:

<?php
$pattern = '/.*<\/h1><p>(.*?)<\/p>.*/';
$replacement = '$1';
$subject = '<h1>Rubrik 1</h1><h2>Underrubrik</h2><h1>Rubrik 2</h1><p>Ett exempel på hur man kan <br />använda ett reguljärt uttryck</p><p>En p-tagg vars innehåll inte kommer med</p>';
echo(preg_replace($pattern, $replacement, $subject));
/*
Det som visas:
Ett exempel på hur man kan
använda ett reguljärt uttryck
*/
?>
264 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)