22.07.2011, 18:20
(22.07.2011, 17:52)Felk schrieb: Und das mit den URL's ist mir klar, aber ich hab keine Möglichkeit gesehen, eine Backreference eines regulären Ausdrucks zu manipulieren.
Dafuer gibt's den e-Modifikator.
PHP-Code:
<?php
$in = "foo R U R' U' bar [alg]R U R' U'[/alg] ney";
$move = "\b[UDFBLR]('|2|\b)";
$out = preg_replace( "#\[alg](.*?)\[/alg]|($move( $move){2,})#e", 'garron("$1$2")', $in );
function garron ( $alg ) {
$raw = stripslashes( $alg );
$par = strtr( $raw, " '", "_-" );
return "[url=http://alg.garron.us/?alg=$par]{$raw}[/url]";
}
print $out;
Eingabe und Resultat:
Code:
foo R U R' U' bar [alg]R U R' U'[/alg] ney
wird zu:
foo [url=http://alg.garron.us/?alg=R_U_R-_U-]R U R' U'[/url] bar [url=http://alg.garron.us/?alg=R_U_R-_U-]R U R' U'[/url] ney
Sieht dann so aus:
foo R U R' U' bar R U R' U' ney