PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : string aufsplitten ?



KJ187
05.05.2005, 15:59
Hey ho.. ich habe eine Frage und zwar habe ich einen String


$inputCode = 'Und hier kommt jetzt ANSIC Code

int main() {
printf("Hallo");
return 0;
}

und jetzt kommt noch ein wenig PHP Code
[ PHP]
echo "HALLO";
[/ PHP]

und später dann halt nochmal ANSI

printf("nochmal ich");
';

So, jetzt will ich das alles was zwischen ... steht durch eine Funktion geht wie zB function codeHighlightAnsiC() und alles was zwischen [ PHP] ... [ /PHP] steht durch eine Funktion function codeHighlightPHP()

anschliessend soll mir halt der komplette Text in richtiger reihenfolge wieder ausgegeben werden. Nur das sich die Teile die in den CODE Fields standen halt formatiert ausgegeben werden.

Ich suche nicht nach einer solchen Funktion wie bbCode hier:


$trans = array ('' => '<b>', '' => '</b>');
$code2 = strtr($inputCode, $trans);


damit ersetze ich ja nur die [ CODE ], ich will aber die sachen die dazwischen stehen durch eine Funktion jagen..

Hoffe sehr das mir da einer Helfen kann bin mit meinem Wissen nämlich langsam am ende :-(

thx & greetz kj187

st0n3
06.05.2005, 14:23
Hi!

Hier ein kleines Beispiel.
preg_replace(
'/\(.*)\[\/ANSIC\]/esUi',
'codeHighlightAnsiC(\'\\1\');',
$str
); oder

function highlightSection($section, $string) {
switch (strtoupper($section)) {
case 'PHP':
printf('call Method HighlightPHP(%s)' . "\n", $string);
break;
case 'ANSIC':
printf('call Method HighlightAnsiC(%s)' . "\n", $string);
break;
}
}

$str = '[ANSIC] my ANSIC Section

[php]
my PHP Section
[/ php]';

$pattern = '/\[(.*)\](.*)\[\/\\1\]/eiUs';

print preg_replace($pattern, 'highlightSection(\'\\1\', \'\\2\');', $str); http://de.php.net/manual/de/function.preg-replace.php
http://de.php.net/manual/de/reference.pcre.pattern.modifiers.php
http://de.php.net/manual/de/reference.pcre.pattern.syntax.php

KJ187
06.05.2005, 15:02
jau besten dank.. werd ich mir später mal genauer ansehen