Autor | Zpráva | ||
---|---|---|---|
meca Profil |
Dobrý den,
pokorně se na Vás po letech obracím s prozbou o funkci, kterou jednorázově potřebuji, a ne a ne a ne oprášit staré znalosti, aby to vše fungovalo... Mám jednoduše strukturovanej text, řetězec: <p> text </p> <p> text </p> <p class="cosi"> text </p> <p> text </p> A potřebuji za každé <p> dosadit jeho pořadí. A ne a ne, ač tuším, jak banální je to (rozsekat, pak projet polem s preg_replace? něco takového? úú). Měl-li by někdo vteřinku... Děkuji, děkuji, děkuji! |
||
tiso Profil |
#2 · Zasláno: 22. 8. 2013, 00:39:36
$text = '<p> text </p> <p> text </p> <p class="cosi"> text </p> <p> text </p>'; $i = 1; while ($text != $text2 = preg_replace('/(<p[^>]*>)(?!\s\d)/', '\\1 ' . $i, $text, 1)) { $text = $text2; $i++; } echo $text; |
||
Kajman Profil |
#3 · Zasláno: 22. 8. 2013, 09:36:03
Od verze 5.3 by mělo jít něco takového
$i = 1; echo preg_replace_callback( '/(<p(\s[^>]*)?>)/i', function($match) use (&$i) { return $match[0] . $i++ . "."; }, $text ); |
||
Camo Profil |
#4 · Zasláno: 22. 8. 2013, 12:11:06
Kajman:
Alebo ešte bez tej globálnej premennej $i: echo preg_replace_callback( '/(<p(\s[^>]*){0,1}>)/i' , function($match) { static $i = 1; return $match[0] . $i++ . "."; }, $text ); |
||
Časová prodleva: 11 let
|
0