Witam
Mam problem z użyciem wyrażeń regularnych w połączeniu z danymi pobieranymi przez HTTP.
Wyrażenie regularne działa prawidłowo dla stringa zapisanego w kodzie, nie chce natomiast współpracować z tekstem pobranym z sieci.
Do pobrania danych używam klasy HTTP_Client z repozytorium PEAR.
Przykład poniżej pokazuje o co mi chodzi. Najpierw pobieram kod strony http://www.google.pl/
Następnie chciałbym przy pomocy wyrażenia regularnego pociąć kod na 3 części: od początku do znacznika <head>, od <head> do </head> i od </head> do końca. Niestety, to nie działa, preg_replace zwraca identyczny kod jak ten podany na wejściu.
Wyrażenie regularne jest raczej poprawne - w ostatniej linii jest przykład tnący w ten sam sposób zhardkodowanego stringa i działa poprawnie.
<?php
require_once 'HTTP/Client.php';
$http = new HTTP_Client();
$http->get('http://www.google.pl/');
$response=$http->currentResponse();
echo '<p style="font-size:10px;">Received data:<br>';
echo '<br>--------------------------------------------------------<br>';
echo htmlspecialchars($response['body']);
echo '<br>--------------------------------------------------------<br>';
echo '<br>Replace<br>';
echo htmlspecialchars(preg_replace('/(.*)<head>(.*)<\/head>(.*)/', '#1[$1] #2[$2] #3[$3]', $response['body']));
echo '<br>--------------------------------------------------------<br>';
echo '<br>Comparision<br>';
echo preg_replace('/(.*)<head>(.*)<\/head>(.*)/', '#1[$1] #2[$2] #3[$3]', 'DANE PRZED <head> NAGLOWEK </head> DANE PO');
?>
Czy wie ktoś czemu to nie działa?
Pozdrawiam