28. november 2004 - 16:26
Der er
5 kommentarer og 1 løsning
Sp om preg_replace
Hej... jeg har en lille kode: $str = preg_replace('/\[box\s+left=(\d+)\s+top=(\d+)\](.*?)\[\/box\]/is','<div class="textbox" style="left: \1px; top: \2px">\3</div>',$str); jeg vil så have \2 til at blive 25 større end den er... hvordan gør man det?
Annonceindlæg fra Computerworld
28. november 2004 - 16:51
#1
callback-funktioner! $str = preg_replace('/\[box\s+left=(\d+)\s+top=(\d+)\](.*?)\[\/box\]/ise', "'<div class=\"textbox\" style=\"left: \1px; top: ' . add(\2, 25) . 'px\">\3</div>",$str); function add($x, $y) { return $x + $y; }
28. november 2004 - 16:54
#2
hov - manglede en ' BTW: Det er utestet, men burde virke ;) - bemærk /e modifieren! $str = preg_replace('/\[box\s+left=(\d+)\s+top=(\d+)\](.*?)\[\/box\]/ise', "'<div class=\"textbox\" style=\"left: \1px; top: ' . add(\2, 25) . 'px\">\3</div>'",$str);
29. november 2004 - 10:08
#5
<?php function add($x, $y) { return $x + $y; } $str = " [box left=12 top=50]hej med ild[/box] "; $str = preg_replace('/\[box\s+left=(\d+)\s+top=(\d+)\](.*?)\[\/box\]/ise', "'<div class=\"textbox\" style=\"left: \\1px; top: ' . add(\\2, 25) . 'px\">\\3</div>'", $str); // Bemærk brug af \\1 i.s.f. \1 osv.! print $str; // <div class="textbox" style="left: 12px; top: 75px">hej med ild</div> ?> Virker fint - jeg skiftede \1 osv. ud med \\1. Har ikke set \1 brugt før, og det virkede i hvert fald ikke ;)