Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapisem wyrażenia regul. (eregi)
Forum PHP.pl > Forum > Przedszkole
nstn
$szukany = '<td class=quoteUp>([0-9]{2,4}\.[0-9]{2})*</td>';
$plikcaly ="<td class=quoteUp>121.22</td>asdfasdf<td class=quoteUp>87.45</td>
$plik2=eregi($szukany, $plikcaly,$r);

Z pomocą funkcji eregi chciałbym tak sparsować większy plik (tutaj przykladowo $plikcaly), aby te liczby mozna było pozyskać i zapisać do pliku. W wyniku dzialania tego kodu tylko pierwsza liczba jest kopiowana do tablicy $r (i ją potrafie zapisac do pliku), ale co zrobić żeby obie te liczby pozyskać, a nawet w orginalnym pliku byłoby ich dużo więcej?? Jak dodatkowo zapisać wyrażenie regularne aby zapisywało też wyrazy oraz liczby?

W zasadzie to docelowo musze sparsować taki text:

<td align=left >NAZWA WŁASNA</td>
<td colspan="2">
</td>
<td class=quoteUp><b>+123</b></td>
<td class=quoteUp>+12</td>
<td class=quoteUp>+45</td>
<td class=quoteUp>+12</td>
<td class=quoteUp>+0.4</td>
<td class=quoteUp>+4.6</td>
<td align=center >05-23</td>

</tr>
<tr bgcolor="#F5F5F5">
<td align=left >NAZWA WLASNA 2</a></td>
<td colspan="2">
</td>
<td class=quoteUp><b>12.42</b></td>
<td class=quoteUp>+0.10</td>


Generalnie takiego textu bedzie z 7 podaniowych, ale to co podalem wyzej (forma) generalnie sie nie zmienia


Please Help, bo nie mam już do tego siły.



nstn
bigZbig
Może coś takiego?
  1. <?php
  2.  
  3. $szukany = '(<td class=quoteUp>[0-9]{2,4}\.[0-9]{2}</td>)';
  4. $plikcaly ='<td class=quoteUp>121.22</td>asdfasdf<td class=quoteUp>87.45</td>';
  5. preg_match_all($szukany, $plikcaly, $r);
  6. print'<pre>'; print_r($r); print'</pre>';
  7.  
  8. ?>
nstn
ten kod nie działa. A poza tym musze wykorzystać ereg (lub eregi)
bigZbig
U mnie działa, a wynik to
Kod
Array
(
    [0] => Array
        (
            [0] => 121.22
            [1] => 87.45
        )

)

Zwroc uwage ze zmienilem troche definicje szukanego tekstu.

Cytat
A poza tym musze wykorzystać ereg (lub eregi)

Nie jestem specem od wyrazen regularnych, ale na moj chlopski rozum stosujac ereg bedziesz musial w petli wielokrotnie przebiec przez ten sam tekst do czasu az nie wylowisz wszystkich wystapien. Mozna to zrobic np tak:
  1. <?php
  2. $szukany = '<td class=quoteUp>([0-9]{2,4}\.[0-9]{2})*</td>';
  3. $plikcaly ='<td class=quoteUp>121.22</td>asdfasdf<td class=quoteUp>87.45</td>';
  4.  
  5.  
  6. while(eregi($szukany, $plikcaly,$r)) {
  7. $liczby[] = $r[0];
  8. $plikcaly = eregi_replace($r[0], '', $plikcaly);
  9. }
  10. print'<pre>'; print_r($liczby); print'</pre>';
  11. ?>

Osobiscie jednak nie cieszylbym sie z takiego przekombinowanego rozwiazania.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.