GRY-Online.pl --> Archiwum Forum

[PHP] Parsowanie tabeli - wydobycie określonych wartości.

25.12.2009
20:16
[1]

Grzesiek [ www eRepublik com PL ]

[PHP] Parsowanie tabeli - wydobycie określonych wartości.

jak z tej tabeli, która wygląda tak:
<table class="messages largepadded">
<tr>
<th width="35px">
</th>
<th width="40px">
</th>
<th width="505px">
</th>
<th width="110px">
</th>
</tr>
<tr>
<td>
<input type="checkbox" name="delete_message[]" id="delete_message_88169456" value="88169456" />
</td>
<td>
<img class="icon" src="/images/parts/icon-bell_notifications-empty.gif" alt="Icon-bell_notifications-empty" />
</td>
<td>
<p class="smallpadded">
<a href="/en/citizen/profile/606731">User</a> has transfered 1 PLN to your account.
</p>

</td>
<td>
<span class="fakeheight">one hour ago</span>
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="delete_message[]" id="delete_message_87473700" value="87473700" />
</td>
<td>
<img class="icon" src="/images/parts/icon-bell_notifications-empty.gif" alt="Icon-bell_notifications-empty" />
</td>
<td>
<p class="smallpadded">
Some alert.
</p>
</td>
<td>
<span class="fakeheight">yesterday</span>
</td>
</tr>
</table>


Chciałbym, aby do tego pliku, do którego zapisuję tabele, zapisane zostały tylko wiersze, w których 3 komórka zawiera tekst:
has transfered (...) to your account

Pomoże ktoś?

25.12.2009
20:19
smile
[2]

Storm [ Hardstyler ]

Niezbyt rozumie co Ty chcesz konkretnie zrobić. Mógłbyś to bardziej sprecyzować, szerzej opisać?

25.12.2009
20:25
[3]

legrooch [ MPO Squad Member ]

Grześ ==> Piłeś? :>

25.12.2009
20:37
smile
[4]

Grzesiek [ www eRepublik com PL ]

@Leszek

Żebyś wiedział, że po winie jestem, a PHP ni chu chu znam, ale już sobie mniej więcej radzę z tym :D

25.12.2009
20:37
[5]

BossManPL [ Generaďż˝ ]

striptags??

26.12.2009
12:56
smile
[6]

maviozo [ man with a movie camera ]

function multi_between($this, $that, $inthat)

$counter = 0;
while ($inthat)

$counter++;
$elements[$counter] = before($that, $inthat);
$elements[$counter] = after($this, $elements[$counter]);
$inthat = after($that, $inthat);

return $elements;



z php.net

dajesz:
$wiersze=multi_between("<p class=\"smallpadded\">","</p>",$tabela);
i masz tablicę wirszy zawierającą tekst pomiędzy tymi dwoma znacznikami. $tabela to oczywiście przykładowa nazwa zmiennej, w której przechowujesz cały ten tekst.

Potem array_map ze striptags
i voila

26.12.2009
21:27
[7]

Grzesiek [ www eRepublik com PL ]

@maviozo

Dzięki wielkie.

Mea culpa, że nie sprecyzowałem bardziej sprawy.


Kod działa dobrze - wydobywa wszystkie komórki.
<?php

$filename="newfile.txt";
$output="";
$file = fopen($filename, "r");
while(!feof($file)) ‹
//read file line by line into variable
$output = $output . fgets($file, 4096);

fclose ($file);


$wiersze=multi_between("<tr >","</tr>",$output);
echo count($wiersze);

$text = '';
foreach ($wiersze as &$value) ‹
$text .= $value;


echo strip_tags($text , '<td><input><img><p class=\"smallpadded\"><a>transfered');

Chciałbym jednak wydobyć wszystkie te wiersze, które zawierają słowo "transfered".

Sorry, z PHP jestem cienki jak sznurek :)

26.12.2009
22:07
[8]

Grzesiek [ www eRepublik com PL ]

Zrobiłem to tak i działa chyba :D

$b = array_map("check_str", $wiersze);

function check_str($str)

if (strpos($str, 'transfered') !== false) ‹
// do not use != instead!!
return strip_tags($str , '<td><input><img><p class=\"smallpadded\"><a>');


27.12.2009
00:30
smile
[9]

maviozo [ man with a movie camera ]

Polecam wyszukiwanie informacji na php.net, dlatego, że poza opisem wbudowanych funkcji jest sporo dodatkowych pisanych przez ludzi - własnie takich 'dodateczków' jak multi_between (jest w stronie o substr;)

© 2000-2025 GRY-OnLine S.A.