preg_replace_callback-Problem

rambo

Mitglied
Hallo, ich habe ein Beispiel zu preg_replace_callback auf php.net gefunden und wollte nun anstatt die "[indent]" die "<indent>" ersetzten:

PHP:
<?php
$input = "plain <indent> deep <indent> deeper </indent> deep </indent> plain <indent> test </indent>";

function parseTagsRecursive($input)
{

  $regex = '#\<indent>((?:<^\<>|\<(?!/?indent>)|(?R))+)\</indent>#';

    if (is_array($input)) {
        $input = '<div style="margin-left: 10px">'.$input[1].'</div>';
    }

    return preg_replace_callback($regex, 'parseTagsRecursive', $input);
}

$output = parseTagsRecursive($input);

echo $output;
?>

Dies scheint aber nicht zu funktionieren...

Was habe ich falsch gemacht?


//Edit:
Ich habe jetzt nur die eckigen Klammern, mit einem vorangeseztem "\" zu einem "<", bzw. ">" geändert:
PHP:
<?php
$input = "plain <indent> deep <indent> deeper </indent> deep </indent> plain <indent> test </indent>";

function parseTagsRecursive($input)
{

  $regex = '#\<indent>((?:[^\<]|\<(?!/?indent>)|(?R))+)\</indent>#';

    if (is_array($input)) {
        $input = '<div style="margin-left: 10px">'.$input[1].'</div>';
    }

    return preg_replace_callback($regex, 'parseTagsRecursive', $input);
}

$output = parseTagsRecursive($input);

echo $output;
?>

Funktioniert! Sorry für das zu frühe posten...
 
Zuletzt bearbeitet:
Zurück