berkut
Новичок
проблема с return
непонятная штука с return в parseCodes(). Если вместо return $r; поставить echo $r; - то выдают ожидаемый результат, но var_dump(parseCodes(@$_POST['Name'])) выдаёт null
в чём проблема???
непонятная штука с return в parseCodes(). Если вместо return $r; поставить echo $r; - то выдают ожидаемый результат, но var_dump(parseCodes(@$_POST['Name'])) выдаёт null
в чём проблема???
PHP:
<?php
function parse($str) {
$str = str_replace('[p]', '<p>', $str);
$str = preg_replace('#(\[i\](.+)\[/i\])#', '<i>\\2</i>', $str);
$str = preg_replace('#(\[b\](.+)\[/b\])#', '<b>\\2</b>', $str);
$str = preg_replace('#(\[u\](.+)\[/u\])#', '<u>\\2</u>', $str);
$str = preg_replace('#(\[color=(\d{6})\](.+)\[/color\])#', '<font color=\\2>\\3</font>', $str);
$str = preg_replace('#(\[img=([a-zA-Z0-9\.\/:]+)\])#', '<img src="\\2">', $str);
return $str;
}
function parseCodes($str) {
static $part;
//[ php] & [ /php] -пробелы лишние
if ((($open = strpos($str, '[ php]')) !== false) && ((($close = strpos($str, '[ /php]', 1)) !== false))) {
$nonphp = substr($str, 0, $open);
$php = substr($str, $open+5, $close-$open-5);
$nonphp = parse($nonphp);
$php = highlight_string($php, true);
$part.= $nonphp.$php;
$rev = substr($str, $close+6);
parseCodes($rev);
}
else {
$r = $part.parse($str);
return $r;
}
}
var_dump( parseCodes(@$_POST['Name']));
?>
<form name="FormName" action="test.php" method="post">
<textarea name="Name" cols=70 rows=10>[ php]kkjjbjb[ /php]</textarea> <input type="submit" value="Send">
</form>