webForumDet fria alternativet

Problem med att hämta data med preg_match

PHPur PHP

1 svar · 390 visningar · startad av jonas18z

jonas18zMedlem sedan okt. 200445 inlägg
Frågan#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?

henkeMedlem 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
*/
?>
127 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)