Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: podmiana DIV
Forum PHP.pl > Forum > PHP
nospor
Hejka, idzie jakos w php bez uzycia DOM podmienic w danym tekscie html jakiegos DIVa? Powiedzmy ze DIV bedzie mial okreslona klase. Caly problem polega na tym, ze w srodku diva bedzie dosc sporo kodu html wraz z innymi DIVami itp wiec nie moge uzyc banalnego wyrazenia regularnego.
Cos kiedys widzialem jakis kod na to, ale nie moge teraz zlokalizowac.

ps: nie chcialbym uzywam do tego DOM. Aktualnie w kodzie ktory musze poprawic uzywany jest Zend_Dom_Query() ale z racji faktu, ze tekst zawiera znaki spoza kodowania utf8 to na wyniku znaki te zamieniaja sie w krzaczki. Wlasnie z tego powodu poszukuje rozwiazania bez DOM.

ps2: kod html w podmienianym DIV bedzie na 100% poprawny, bez brakujacych znacznikow domykajacych itp
kapslokk
Jedyne co mi przychodzi do glowy to uzycie: http://php.net/manual/en/regexp.reference.recursive.php
Ale to performance'owo chyba troche kiepsko wypada.
nospor
wydajnosc tu nie ma znaczenia. recursive pattern.... hm, musze w takim razie spojrzec co i jak bo sie jeszcze nie bawilem

edit: no dobra, tu sie chyba to nie przyda bo rekurencja wymaga pojawienia w srodku podobnego ciagu a u mnie w srodku mojego DIV z dana klasa nie bedzie juz takiego DIV z ta klasa. Ba, moze w ogole nie byc DIVa, moga byc <p> <span> <table> bez divow
kapslokk
A czy mozesz wrzucic gdzies przyklad danych wejsciowych i oczekiwany wynik?
nospor
input:
Kod
<div class="szukana-klasa">

<div class="datatable">
<table>
<colgroup>
[some table data]
</colgroup>
<caption>Some caption</caption>
<thead>
<tr class="rh columns">
<th rel="col:0">Daily Titles</th>
<th rel="col:1">Jul-17</th>
<th rel="col:2">Jun-18</th>
<th rel="col:3">Jul-18</th>
<th rel="col:4">YoY Actual Change</th>
<th rel="col:5">YoY % Change</th>
<th rel="col:6">PoP Actual Change</th>
<th rel="col:7">PoP % Change</th>
</tr>
</thead>
<tfoot>
<tr class="rf">
<td rel="col:0">Total Daily</td>
<td class="n" rel="col:1">7,567,279</td>
<td class="n" rel="col:2">6,949,971</td>
<td class="n" rel="col:3">6,912,413</td>
<td class="n neg" rel="col:4">-654,866</td>
<td class="n neg" rel="col:5">-8.7</td>
<td class="n neg" rel="col:6">-37,558</td>
<td class="n neg" rel="col:7">-0.5</td>
</tr>
</tfoot>
<tbody>
<tr class="rg rg-1">
<td colspan="8">Quality</td>
</tr>
<tr class="go o">
<td rel="col:0">Daily Telegraph</td>
<td class="n" rel="col:1">477,927</td>
<td class="n" rel="col:2">370,613</td>
<td class="n" rel="col:3">374,535</td>
<td class="n neg" rel="col:4">-103,392</td>
<td class="n neg" rel="col:5">-21.6</td>
<td class="n" rel="col:6">3,922</td>
<td class="n" rel="col:7">1.1</td>
</tr>
<tr class="go e">
<td rel="col:0">Financial Times</td>
<td class="n" rel="col:1">186,018</td>
<td class="n" rel="col:2">183,319</td>
<td class="n" rel="col:3">179,010</td>
<td class="n neg" rel="col:4">-7,008</td>
<td class="n neg" rel="col:5">-3.8</td>
<td class="n neg" rel="col:6">-4,309</td>
<td class="n neg" rel="col:7">-2.4</td>
</tr>
</tbody>
</table><div class="downloader">Download as: <div class="download-strategy"><a href="#" rel="/services/datatable-from-html/csv">CSV</a></div> | <div class="download-strategy"><a href="#" rel="/services/datatable-from-html/excel">Excel</a></div></div><div class="clear close"></div>

</div>
</div>


output:
Kod
<p>blablabla</p>


Ale jak mowilem input moze byc zupelnie innny, nie musz tam byc tabelka, moze byc cokolwiek.
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-2024 Invision Power Services, Inc.