Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z zapisem wyrażenia regul. (eregi), Problem z zapisem wyrażenia regul. (ereg
-nstn-
post
Post #1





Goście







$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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
bigZbig
post
Post #2





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


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. ?>
Go to the top of the page
+Quote Post
nstn
post
Post #3





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 25.01.2006

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


ten kod nie działa. A poza tym musze wykorzystać ereg (lub eregi)
Go to the top of the page
+Quote Post
bigZbig
post
Post #4





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


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.

Ten post edytował bigZbig 26.01.2006, 08:37:59
Go to the top of the page
+Quote Post

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: 22.08.2025 - 12:26