Hi @all,
ich spiele gerade mal bisschen mit RegExp und rekursion rum, dabei stoße ich auf ein Problem wo ich grad häng.
Folgender Code:
Ich bin der Meinung es liegt am falschen Funktionsaufbau, aber wie soll ich das anders lösen? Ich steh irgendwie grad voll auf dem Schlauch und weis nicht weiter. Einen zweites element im Funktionsheader wäre machbar worin ich das aktuelle Arrayelement übergebe oder NULL. Aber das kann doch nicht die Lösung sein oder doch?
Danke
Die Ausgabe des Aktuellen Codes kann man hier sehen.
ich spiele gerade mal bisschen mit RegExp und rekursion rum, dabei stoße ich auf ein Problem wo ich grad häng.
Folgender Code:
PHP:
<?php
function _bbcode($string)
{
$match = array();
$rep_array = array(1 => array('b', '<b>', '</b>')
, 2 => array('ol', '<ol>', '</ol>')
, 3 => array('ul', '<ul>', '</ul>')
, 4 => array('i', '<i>', '</i>')
, 5 => array('u', '<u>', '</u>')
, 6 => array('sub', '<sub>', '</sub>')
, 7 => array('sup', '<sup>', '</sup>')
, 8 => array('h1', '<h1>', '</h1>')
, 9 => array('h2', '<h2>', '</h2>')
, 10 => array('pre', '<pre>', '</pre>')
, 11 => array('quote', '<pre>', '</pre>')
, 12 => array('url', '<a href="">', '</a>')
, 13 => array('code', '<pre>', '</pre>')
, 14 => array('img', '<img src="">', '</img>')
/*
, '[]' => array('<>', '</>')
, '[]' => array('<>', '</>')
, '[]' => array('<>', '</>')
*/
);
foreach($rep_array AS $k => $v)
{
$pat = "@^([^\[".$v[0]."\]].*)?(\[".$v[0]."\])(.*)(\[/".$v[0]."\])(.*)?$@i";
if(preg_match($pat, $string, $res))
{
$element = preg_replace("@\[/?".$v[0]."\]@i", '', $v[1].$res[3].$res[5].$v[2]);
array_push($match, $element);
if(preg_match($pat, $element))
_bbcode($element);
else
continue;
}
}
return array_pop($match);
}
echo _bbcode("[B]DIES IST [B]EIN TEST[/B], FÜR REGEX[/B]! [H1]Mal sehen[/H1] [h2]obs funzt[/H2] *gespannt bin");
echo "<br /><br />Quellcode:<br><pre>".htmlentities(_bbcode("[B]DIES IST [B]EIN TEST[/B], FÜR REGEX[/B]! [H1]Mal sehen[/H1] [h2]obs funzt[/H2] *gespannt bin"))."</pre>";
?>
Ich bin der Meinung es liegt am falschen Funktionsaufbau, aber wie soll ich das anders lösen? Ich steh irgendwie grad voll auf dem Schlauch und weis nicht weiter. Einen zweites element im Funktionsheader wäre machbar worin ich das aktuelle Arrayelement übergebe oder NULL. Aber das kann doch nicht die Lösung sein oder doch?
Danke
Die Ausgabe des Aktuellen Codes kann man hier sehen.
Zuletzt bearbeitet: