Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.
PHP ? Textfeld soll HTML erkennen und umsetzten ? !?
Hallo erstmal, ich hoffe ich finde hier ein paar Leute mit PHP Kenntnissen.
Also folgende Situation: Ich habe auf meiner Website eine Art Blogsystem eingerichtet, das heißt wenn ich in mein Textfeld auf seite blog1.php (z.B) einen Text schreibe kommt es auf seite blog.php wieder raus.. So nun kann das Textfeld aber nur normale Texte erkennen und keine Umbrüche oder Links, wie kann ich ein PHP Script erstellen das, dass Textfeld diese HTML befehle verstehen und umsetzen lässt.? Also das ich wenn ich in das Textfeld <br> eintippe, das er mir dann später auch einen Umbruch ausgibt?
Hoffe hier sind ein paar Leute unterwegs die mich verstehen und php auf diesem Niveau beherrschen :) Mfg Nicklas
4 Antworten
- vor 9 JahrenBeste Antwort
PHP stellt eine Funktion zur Verfügung, mit der Zeilenumbrüche aus einer Textarea in das HTML-Tag <br> umgewandelt werden: nl2br()
Nehmen wir mal an, dass der per POST übertragene Inhalt eines Textfelds in der Variablen $text vorliegt. Dann wandelt die Programmzeile
$text = nl2br ($text) ;
die Umbrüche im Text in das HTML-Format um.
Eine URL in einen anklickbaren Link umzuwandeln, ist dagegen schon etwas aufwändiger, denn meines Wissens gibt es keine PHP-Funktion, die das automatisch macht. Die Funktion wirst du dir also selbst schreiben müssen, was im Prinzip ja auch kein Problem ist:
Mit der Funktion stristr() suchst du nach den Zeichenfolgen "http://"/ oder "www". Danach kannst du mit weiteren Stringfunktionen (die zähle ich hier jetzt aber nicht auf) den Link extrahieren und durch die HTML-Schreibweise "<a href = ...> ... </a>" ersetzen.
- Anonymvor 9 Jahren
hallo nick
das was Kallisto geschrieben hat ist die einfachste lösung für dein problem. es gibt aber auch die möglichkeit editoren in eine <textarea> einpflegen. das heiÃt für dich du kannst viele sachen nutzen und die bedienung ist wie bei world.
schau einfach mal hier: http://www.queness.com/post/212/10-jquery-and-non-...
das einpflegen ist auch nicht besonders schwer
- 🐟 Fish 🐟Lv 7vor 9 Jahren
PHP Sorry kann die aber sagen wie das generell funktioniert.
Tokenisieren und nur für die Anzeige mit den richtigen Steuercodes für die Anzeige versehen. Wenn die Token so gewählt sind das sie nicht mir dem normalen HTML kollidieren also intern zum
Beispiel
text = "Dies ist ein Text mit einem **Umbruch** Umbruch."
Mit einer Textersetzung kannst du den Text dann aufbereiten.
htmltext = Replace (text, "**Umbruch**", "<br>" + chr(13))
Oder
anzeigetext = Replace (text, "**Umbruch**", chr(13))
Für reine Anzeige und Manipulation reicht das aus. Wenn der Text allerdings interpätiert werden soll dann brauchst du einen Pattern Matching Automaten. http://de.wikipedia.org/wiki/String-Matching-Algor...
Das Grundprinzip eines Patternmatching Automaten ist das reservierte Token eine Zustandsänderung herbeiführen. Und jeder Zustand Wiederum der Startzustand für weitere Zustandsänderungen ist. Konkret:
Startzustand : Zeichen(folge) => Nächster Zustand
HTML Startzustand : "<" => Tag - start
HTML Startzustand : irgendein Zeichen => HTML Startzustand
Tag - start : "\" => Close Tag Start
Tag - start : {HTML Tagname} => Tag - Found
Close Tag Start : {HTML Tagname} => Close Tag Ende
Close Tag Ende : ">" => HTML Startzustand
Tag - Found : " " => Tag - Found
Tag - Found : {Tag Attribut} => Tag Attribut Start
Tag - Found : {Tag Event} => Tag mit Event Start
Tag - Found : alle anderen => HTML Fehler / teiner Text
Tag Attribut Start : "=" => Attribut Wert Start
Tag Attribut Start : ">" => Tag abgeschlossen
Attribut Wert Start : " " => Attribut Wert Ende
Attribut Wert Ende : " " => Tag Attribut Start
Tag mit Event Start : "(" => Tag mit Event Parameter Start
Tag mit Event Parameter Start : "," => Tag mit Event Parameter Start
Tag mit Event Parameter Start : ")" => Tag mit Event Parameter Ende
{HTML Tagname} : "br", "html", "head", "body" usw. http://webkompetenz.wikidot.com/html-handbuch:html... Hier bitte nur den Text ohne '<' und '>' verwenden
{HTML Attribut} : "size", "alt", "href" usw. http://webkompetenz.wikidot.com/html-handbuch:html...
{HTML Event} : "onload", "onclick" usw. http://webkompetenz.wikidot.com/html-handbuch:html...
Startzustand : <Tag..> => inner Text = Startzustand (Stack verwenden)
inner Text = Startzustand : <\Tag> => Startzustand
Im Intereter werden nur die Daten gesammelt also
Tag
- Tagname
- Parameterliste
- Eventliste
- Eingebetteter Text inner text also von <tag ...>inner text</tag>
<BR>, <HR> und <PAR> benötigen eine sonderbehandlung da sie nicht zwingend ein Closetag haben.
Damit ist ein HTML Interpeter vollständig beschrieben.