Ik zit al een tijdje met een 'probleem' op m'n weblog.
Hier heb ik zelf een parser in gebouwd welke enkele tags zoals
en dergelijke vertaald naar een HTML equivalent.
Nu wilde ik ook gebruik maken van de code-tag.
Hier stuit ik echter op een probleem, namelijk dat deze vertaling niet goed gaat.
De vertalingen doe ik voornamelijk met de functie str_replace, aangezien het niet echt moeilijke replacements zijn. Een reguliere expressie is volgens mij een beetje overkill. Regex gebruik ik wel voor hyperlinks, maar dat is nu niet echt aan de orde.
Wanneer ik dit in m'n functie plaats
verwacht ik dat de code-tag wordt vertaald in een <div> met de bijbehorende css class.
Dit is echter niet het geval. De [code]-tag wordt vertaald in een lege string.
Ook wanneer ik de div wijzig in een <p> of een <pre> blijft deze vertaald worden naar een lege string.
De str_replace werkt dus wel een beetje, maar het lijkt alsof hij ergens midden in de functie crashed.
Het vreemde is dat wanneer ik dit doe
dan komen namen piet en klaas tevoorschijn waar ik voorheen de code-tag had geplaatst.
Aangezien ik de str_replace precies ook zo bij andere tags gebruik lijkt het me onwaarschijnlijk dat ik iets in de syntax verkeerd heb gedaan.
Voor de volledigheid, hier de gehele replace functie
Eerst had ik de code-tags onderin staan en nu verplaatst naar het midden. Ik dacht dat er misschien een buffer zou kunnen zijn volgelopen, maar het heeft niets geholpen.
Voor zover ik na kan gaan zou deze functie gewoon moeten werken.
Iemand een suggestie?
[edit]
PS: De tekst die vertaald wordt bevind zich in een div.
Deze div heeft de style
Dat zou volgens mij niet uit moeten maken, want volgens mij kun je wel meerdere div's in elkaar hebben.
Hier heb ik zelf een parser in gebouwd welke enkele tags zoals
code:
1
| [b], [i] |
en dergelijke vertaald naar een HTML equivalent.
Nu wilde ik ook gebruik maken van de code-tag.
Hier stuit ik echter op een probleem, namelijk dat deze vertaling niet goed gaat.
De vertalingen doe ik voornamelijk met de functie str_replace, aangezien het niet echt moeilijke replacements zijn. Een reguliere expressie is volgens mij een beetje overkill. Regex gebruik ik wel voor hyperlinks, maar dat is nu niet echt aan de orde.
Wanneer ik dit in m'n functie plaats
PHP:
1
2
| $bodyText = str_replace( "[code]", "<div class='divCode'>", $bodyText ); $bodyText = str_replace( "[/code]", "</div>", $bodyText ); |
verwacht ik dat de code-tag wordt vertaald in een <div> met de bijbehorende css class.
Dit is echter niet het geval. De [code]-tag wordt vertaald in een lege string.
Ook wanneer ik de div wijzig in een <p> of een <pre> blijft deze vertaald worden naar een lege string.
De str_replace werkt dus wel een beetje, maar het lijkt alsof hij ergens midden in de functie crashed.
Het vreemde is dat wanneer ik dit doe
PHP:
1
2
| $bodyText = str_replace( "[code]", "piet", $bodyText ); $bodyText = str_replace( "[/code]", "klaas", $bodyText ); |
dan komen namen piet en klaas tevoorschijn waar ik voorheen de code-tag had geplaatst.
Aangezien ik de str_replace precies ook zo bij andere tags gebruik lijkt het me onwaarschijnlijk dat ik iets in de syntax verkeerd heb gedaan.
Voor de volledigheid, hier de gehele replace functie
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| function replacing( $text ) { $bodyText = str_replace( "&", "&", $text ); $bodyText = str_replace( "<", "<", $bodyText ); $bodyText = str_replace( ">", ">", $bodyText ); $bodyText = str_replace( "\n", "<br>", $bodyText); $bodyText = str_replace( "[b]", "<b>", $bodyText ); $bodyText = str_replace( "[i]", "<i>", $bodyText ); $bodyText = str_replace( "[/b]", "</b>", $bodyText ); $bodyText = str_replace( "[/i]", "</i>", $bodyText ); $bodyText = str_replace( "[code]", "<div class='divCode'>", $bodyText ); $bodyText = str_replace( "[/code]", "</div>", $bodyText ); $bodyText = str_replace( "[img]", "<img alt='Picture' class='postPic' src='", $bodyText ); $bodyText = str_replace( "[/img]", "' />", $bodyText ); $bodyText = str_replace( "[url]", "", $bodyText ); $bodyText = str_replace( "[/url]", "", $bodyText ); //De links converteren $bodyText = CreateLinks($bodyText); return $bodyText; } |
Eerst had ik de code-tags onderin staan en nu verplaatst naar het midden. Ik dacht dat er misschien een buffer zou kunnen zijn volgelopen, maar het heeft niets geholpen.
Voor zover ik na kan gaan zou deze functie gewoon moeten werken.
Iemand een suggestie?
[edit]
PS: De tekst die vertaald wordt bevind zich in een div.
Deze div heeft de style
code:
1
2
3
4
5
6
| div.postContent { font-size : 10pt; color : #020202; background-color : #FFFFFF; } |
Dat zou volgens mij niet uit moeten maken, want volgens mij kun je wel meerdere div's in elkaar hebben.
[ Voor 5% gewijzigd door Jan_V op 01-09-2007 20:41 ]
Battle.net - Jandev#2601 / XBOX: VriesDeJ