ďťż

[PHP] wyrażenia regularne obróbka pewnego kodu

       

Podstrony


telcocafe

Witam. Mam na wejściu w jakiejś zmiennej taki kod HTML(bez znaków nowej linii, ale dałem tak, żeby było estetyczniej):
<TR><TD>1</TD><TD>Pipidówka Pipidowice</TD><TD>17</TD><TD>12</TD><TD>2</TD><TD>3< /TD><TD>76</TD><TD>32</TD><TD>38</TD></TR> <TR><TD>2</TD><TD>Łososianka Łososiowo</TD><TD>17</TD><TD>12</TD><TD>2</TD><TD> 3</TD><TD>52</TD><TD>28</TD><TD>38</TD></TR> <TR><TD>3</TD><TD>Forumowianka Ekspertowice</TD><TD>17</TD><TD>12</TD><TD>1</TD><TD> 4</TD><TD>77</TD><TD>35</TD><TD>37</TD></TR>

Krótko mówiąc, na wejściu mamy tabelę piłkarską a w środku takie pierdoły jak liczba meczy, bramek i inne takie. A co chcę osiągnąć? Osiągnąć chcę mniej więcej takie coś:
<TR><TD>1</TD><TD>Pipidówka Pipidowice</TD><TD><STRONG>38</STRONG></TD></TR> <TR><TD>2</TD><TD>Łososianka Łososiowo</TD><TD><STRONG>38</STRONG></TD></TR> <TR><TD>3</TD><TD>Forumowianka Ekspertowice</TD><TD><STRONG>37</STRONG></TD></TR>
Innymi słowy, chcę zostawić jedynie dwie pierwsze kolumny i ostatnią(pozycja, nazwa i liczba punktów), z tym że tą ostatnią dodatkowo pogrubić. Kombinowałem z wyrażeniami regularnymi, ale kompletnie się poplątałem. Proszę zatem o pomoc w tej sprawie.

Oprócz tego wyczytałem gdzieś w internecie, że lepiej stosować funkcję preg_replace zamiast ereg_replace, bo jest szybsza. Tylko że ten kawałek w ereg replace działa dobrze:
$tabela=ereg_replace(' +','',$tabela); // usuwa wszystkie spacje, jeżeli jest ich więcej niż jedna w kupie
a preg replace wywala:
Warning: preg_replace() [function.preg-replace]: No ending delimiter '+' found in F:\Program Files\Abyss Web Server\htdocs\test.php on line 10
Co jest tego przyczyną?
Użytkownik miszczu49 edytował ten post 16 maj 2008, 19:37


Bo preg_replace wymaga eee.. "start/end delimiter", czyli znaków początku i końca wyrażenia, np. / albo #.
preg_replace('/\s+/', '', $tabela);
^ Dodatkowo zamiast usuwać same podwójne spacje (ten zapis był brzydki) usuwa każdy "biały znak" - tab, spację, nową linię itd.

preg_replace('/<TR><TD>(\d*)<\/TD><TD>( .*)<\/TD>(.*)<TD>(\d*)<\/TD><\/TR> /Ui', '<TR><TD>$1</TD><TD>$2</TD><TD><STRONG> $4</STRONG></TD></TR>', $whatever);

$tabela=preg_replace('/ +/', "", $tabela);

// EDIT kolega napisal kiedy ja pisalem :(
Użytkownik polasek edytował ten post 16 maj 2008, 20:35
W tym wyrażeniu coś chyba jest nie tak, bo właściwie nic mi nie usunęło. Jeszcze zobaczę czy to nie moja wina.

// ach, moja wina, skasowałem to Ui z końca bo myślałem, że to nic nie znaczy i to literówka ;)
// no, teraz śmiga :) Dzięki :)
Użytkownik miszczu49 edytował ten post 16 maj 2008, 22:00
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.