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ś?

Storm [ Hardstyler ]
Niezbyt rozumie co Ty chcesz konkretnie zrobić. Mógłbyś to bardziej sprecyzować, szerzej opisać?
legrooch [ MPO Squad Member ]
Grześ ==> Piłeś? :>

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
BossManPL [ Generaďż˝ ]
striptags??

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
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 :)
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>');

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;)