Ik teskt die ingevoerd wordt op een website automatisch voorzien wordt van HTML opmaak. Ik heb wat rondgestoeid met MSHTML, maar van dingen zoals "<FONT FACE=>" worden we niet echt vrolijk. Tegenwoordig willen we strakke lowercase HTML met opmaak doormiddel van stylesheets.
Ik heb het volgende gemaakt, stukken tekst worden opgesplist per alinea en aan de hand van de inhoud/grootte van de alinea worden er tags toegevoegd.
Alles werkte perfect toen ik in PHP via $text="alle tekst hier"; de opmaak liet maken, maar toen ik het via een formulier liet versturen ging het opeens niet meer. De date wordt wel ontvangen, <br>'s worden toegevoegd maar de tekst wordt niet opgedeeld door de explode() functie. Ik heb al vanalles geprobeerd, ook om \n te vervangen door \r, maar dat is het probleem niet want bij de str_replace() functie gaat alles wel goed.
Wat gaat er mis??
Een online voorbeeld kun je hier vinden.
Ik heb het volgende gemaakt, stukken tekst worden opgesplist per alinea en aan de hand van de inhoud/grootte van de alinea worden er tags toegevoegd.
Alles werkte perfect toen ik in PHP via $text="alle tekst hier"; de opmaak liet maken, maar toen ik het via een formulier liet versturen ging het opeens niet meer. De date wordt wel ontvangen, <br>'s worden toegevoegd maar de tekst wordt niet opgedeeld door de explode() functie. Ik heb al vanalles geprobeerd, ook om \n te vervangen door \r, maar dat is het probleem niet want bij de str_replace() functie gaat alles wel goed.
Wat gaat er mis??
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| //toont alle verstuurde tekst echo($text); //horizontale lijn om de scheiding aan te geven echo("\n\n<hr>\n\n"); //"verboden" tekens omzetten $text = htmlentities($text]); //enters vervangen door <br>'s (nl2br() gebruiken we niet want die maakt <br />) $text = str_replace("\n", "<br>\n", $text); //breek de tekst in stukken per alinea HIER gaat het fout! $text = explode("<br>\n<br>\n", $text); //laat de eerste waarde van de array zien, de tekst is niet opgebroken, alles zit er in! echo($text[0]); //weer een horizontale lijn echo("\n\n<hr>\n\n"); for($i = 0; $i <= count($text); $i++) { //als de alinea langer/gelijk is dan 90 tekens zetten we er <p> tags omheen if(strlen($text[$i]) >= 90 || $i == count($text) -1) {$text[$i] = "<p>".$text[$i]."</p>";} //bestaat de alinea alleen uit dashes? dan is het een horizontale lijn elseif(eregi("^[-]{5,70}$", $text[$i])) {$text[$i] = "<hr>";} //alinea's korter dan 90 tekens zijn een tussenkop, behalve als het de laatste alinea is. elseif(strlen($text[$i]) < 90 && strlen($text[$i]) > 5 && $i < count($text) -1) {$text[$i] = "<h2>".$text[$i]."</h2>";} } //zet alles weer achter elkaar en laat het zien. $text = implode("\n\n", $text); echo($text); |
Een online voorbeeld kun je hier vinden.
Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.