|
17. 08. 2007. | #1 |
Predrag Supurović
Grand Master
Datum učlanjenja: 24.01.2006
Lokacija: Užice
Poruke: 791
Hvala: 3
200 "Hvala" u 12 poruka
|
preg_replace_callback() je prvo sa cim sam probao ali je logika te funkcije upravo obrnuta onome sto mi treba.
__________________
Peđina beležnica (blog) - www.uzice.net - wireless.uzice.net - www.vokabular.org - www.vodic.net - forum.uzice.net |
18. 08. 2007. | #2 |
Predrag Supurović
Grand Master
Datum učlanjenja: 24.01.2006
Lokacija: Užice
Poruke: 791
Hvala: 3
200 "Hvala" u 12 poruka
|
Uspeo sam da napravim parsiranje. RAdi sve kako treba ako korsitim <lang></lang> i to mi cak radi posao posto se ti pomocni tagovi nece pojavljivati u izlaznom dokumentu. Medjutim imam problem, taj tag bi u svtvati reba da izgleda ovako:
nekitekst<lang id="en">nekitekst</lang> U prvoj liniji prilozenog koda je regext koji match-uje <lang id="en"> ali mi ne uspeva da na isti nacin namestim da radi izraz za pretragu koji je definisan u promenljivoj $regex. Trebalo bi da parsisa sa ovim id="en" (gde en moze biti bilo koja oznaka jezika) i da tu oznaku jezika mogu da procitam kako bih parsiranom segmentu naznacio da je u tom jeziku. U prilozenom kodu, promenljivoj $m_cur_lang treba da se dodeli procitana oznaka jezika. Al' nece pa nece... Kôd:
<pre> <?php echo preg_match ('#\<lang( (.)*)*\>#', ' <lang id="sr"> '); $input = "nivo1<lang>nivo2<lang>nivo3<lang>nivo4</lang></lang>nivo2</lang>nivo1<lang>nivo2</lang>nivo1"; echo "input = $input\n"; $parsed = parseLang ($input, 'sr'); print_r ($parsed); echo "result = " . joinLang ($parsed); function parseLang ($p_input, $p_def_lang) { $regex = '#\<lang\>((?:[^<]|\<(?!/?lang\>)|(?R))+)\</lang\>#'; if (preg_match ($regex, $p_input)) { $split = preg_split ($regex, $p_input,2); //tekuci nivo, prefiks unset ($m_out); $m_out['lang'] = $p_def_lang; $m_out['value'] = $split[0]; $out[0] = $m_out; // sledeci nivo po dubini $m_input = $p_input; if (strlen ($split[0]) > 0) $m_input = substr ($m_input, strlen ($split[0])); if (strlen ($split[1]) > 0) $m_input = substr ($m_input, 0, - strlen ($split[1])); $m_cur_lang = $p_def_lang; // ovde treba izvuci vrednost iz lang taga $m_input = preg_replace ($regex, '$1', $m_input); unset ($m_out); $m_out[0] = parseLang ($m_input, $m_cur_lang); $out[1] = $m_out; // tekuci nivo, sufiks unset ($m_out); $m_out['lang'] = $p_def_lang; $m_out = parseLang ($split[1], $m_out['lang']); $out[2] = $m_out; $m_result = $out; } else { $m_result['lang'] = $p_def_lang; $m_result['value'] = $p_input; } return ($m_result); } function joinLang ($p_input) { $m_result = ''; foreach ($p_input as $m_item) { if (isset ($m_item['value'])) { if (! empty ($m_item['value'])) { $m_result .= '<lang' /* id="' . $m_item['lang'] . '"'*/ . '>' . $m_item['value']; } } else { $m_result .= joinLang ($m_item); } } $m_result .= '</lang>'; return ($m_result); } ?> </pre>
__________________
Peđina beležnica (blog) - www.uzice.net - wireless.uzice.net - www.vokabular.org - www.vodic.net - forum.uzice.net |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
RSS parsiranje | nikolam | (X)HTML, JavaScript, DHTML, XML, CSS | 4 | 02. 10. 2009. 21:27 |
ASP/ASP.NET parsiranje RSS feeda | NeonDragon | Programiranje | 2 | 23. 09. 2008. 19:52 |
Problem smarty i poseban lang fajl sa latinicnim prevodom i nasim slovima? | MojNalog | Sva početnička pitanja | 7 | 06. 06. 2008. 14:13 |
Dva razlicita lang fajla - merge | pcigre | PHP | 8 | 09. 04. 2007. 22:31 |
Ruby-Lang.org | crews_adder | Linkovi | 0 | 19. 09. 2006. 17:23 |