Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg_match_all i alias tablicy (chyba można to tak nazwać)
linx
post
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 3
Dołączył: 25.06.2007

Ostrzeżenie: (0%)
-----


Witam,
jestem w trakcie przygotowywania skryptu z CURL.

Posiadam ciąg z którego chcę wyciągnąć dane i godzinę:
  1. <p class="tb_title">Tabela kursowa obowiązuje od dnia 20.02.2009 godzina 16:36</p>

Dane dają się wyciągną ale dal łatwości pisania skryptu chciałem skorzystać z aliasów (chyba tak można to nazwać)
http://pl.php.net/preg_match_all - > Przykład #3 Using named subpattern" title="Zobacz w manualu PHP" target="_manual
Kiedy chce wyciągnąć np godzinę:
  1. <?php
  2. preg_match_all('/<p.*?class="tb_title".*?>Tabela kursowa obowiązuje od dnia.*?godzina.*?(?<name>d++)*?</p>/', $wynik, $matches0);
  3. ?>

to wyświetla mi się:
  1. <?php
  2. [name] => Array
  3.        (
  4.            [0] => 36
  5.        )
  6. ?>

zamiast:
  1. <?php
  2. [name] => Array
  3.        (
  4.            [0] => 16:36
  5.        )
  6. ?>


bez względu na to czy dam: (?<name>\d++), (?<name>\d+), (?<name>\w++), (?<name>\w+) zawsze dostaje "[0] => 36".
Kiedy daje (?<name>\d), (?<name>\w) wtedy dostaje "[0] => 6"

Czy ma ktoś jakiś pomysł(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) na mój problem??
Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


błąd - poczytaj na google o wyrażeniach regularnych i zachłanność wyrażeń regularnych, w pojedyńczym apostrofie wstawiając spację jest ona spacją a nie trzeba pisać \s (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) - popraktykój (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) :
Kod
$text='<tr class="">
<td width="30%">Australia</td>
<td width="15%">DOLAR</td>
<td width="17%">1 AUD</td>

<td width="12%">2.3338</td>
<td width="15%">2.4706</td>
<td width="12%">2.4022</td>
</tr>

<tr class="">
<td width="30%">Kanada</td>
<td width="15%">DOLAR</td>

<td width="17%">1 CAD</td>
<td width="12%">2.8924</td>
<td width="15%">3.0622</td>
<td width="12%">2.9773</td>
</tr>';

$preg = preg_match_all('/<tr class="">[^<]*?<td width="30%">([^<]*?)<\/td>[^<]*?<td width="15%">([^<]*?)<\/td>[^<]*?<td width="17%">([^<]*?)<\/td>[^<]*?<td width="12%">([^<]*?)<\/td>[^<]*?<td width="15%">([^<]*?)<\/td>[^<]*?<td width="12%">([^<]*?)<\/td>[^<]*?<\/tr>/s', $text, $matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 01:44