String zw. 2 Zeichen aus Array auslesen

Cryog3n

Mitglied
Hallo an alle,

ich hab eine Frage und hoffe, dass man mir helfen kann. Das wär super. Ich bin noch nicht so lange mit Perl am werkeln und ich hab da noch ein paar Problemchen. Also hier mein Problem.

Ich hab ein Array welches jeweils aus 4 Zeilen Daten besteht. In diesem Array geht es nur um Zeile 4 die beliebigen Text beinhaltet. Den Text spreche ich so an...

$text[4] <- alle 4 Zeilen werden später in Tags formatiert und in die HTML Seite in einer Schleife eingebettet. Das funktioniert alles soweit.

1. Zeile = Überschrift
2. Zeile = Teilüberschrift
3. Zeile = Verfasser etc.
4. Zeile = Text (erscheint einfach als Textblock)

----

1. Zeile = Überschrift
2. Zeile... usw.

Jetzt soll der USER aber beim verfassen des Textes anhand eines beliebigen Zeichens (z.b. #) eine Aufzählung hervorrufen können in dem Textblock.

User schreibt z.b.

EINGABE:
Hier steht das was der # User eingibt # und hier mal ein Test, und noch ein Test # ok - alles klar!

AUSGABE: (sollte dann so aussehen)
Hier steht das was der
° User eingibt
° und hier mal ein Test, und noch ein Test
° ok - alles klar!

Hat jemand eine Idee wie ich zwischen den beiden # Zeichen den Text in eine Variable bringe und das ganze dann verarbeiten kann?

Gruß, CrYo
 
WOW! Danke renee das klappt jetzt schon soweit mal :eek:)

Bin gerade dabei, Die Zeile genau zu entziffern und zu verstehen *gg* nur eins funktioniert noch nicht und ich weiß nicht wieso! Sollte eigentlich passen... hast Du da noch einen Rat?

Die Tabelle hat eine Begrenzung von z.b. 250px. Leider fehlt jetzt nach dem Zeilenumbruch der Abstand bei der Aufzählung. Wenn das noch klappen würde wärs echt perfekt. 1 Zeile, oh man! Und ich hatte schon foreach, if und Teufelszeug versucht *gg*

So siehts jetz aus:
° das ist ein Test mit einem String
der zwischen zwei Rauten steht
° hier gehts weiter
° Hallo Welt

So sollte es aussehen (normal müsste das so sein bei dem <li> Tag)
° das ist ein Test mit einem String
_der zwischen zwei Rauten steht ( _ = soll einen Abstand darstellen)
° hier gehts weiter
° Hallo Welt

Wenns dafür noch ne Lösung gäbe wäre das perfekt! Vielen Dank schonmal für Deine/Eure Mühe!

Gruß, CrYo
 
Zuletzt bearbeitet:
Hallo nochmal!

Jetzt hab ich es hinbekommen... musste lediglich den <ul> Tag ergänzen für "ungeordnete Liste". Schon passt es mit dem einrücken etc. Ich hab die Raute noch durch eine Variable ersetzt, da ich die Zeile öfters brauche und so einfach nur im Deklarationsteil ein Zeichen in der Variable ändern muss. Vielen Vielen Dank nochmal @ renee

$zeile[4] =~ s/$zeichen([^$zeichen]+)/<ul><li>$1<\/li><\/ul>/g;

Gruß, CrYo
 
Hallo nochmal,

jetzt hab ich doch noch ein größeres Problem. Wie kommt der User in der Eingabe wieder aus dem Aufzählungsmodus raus? Ich kann normal anfangen zu schreiben, aber sobald ich das Zeichen initialisiere also er eine Aufzählung will komm ich ja nicht mehr zurück in den Normaltextmodus! Hilfe... wie mach ich denn das jetzt?

Ich hab versucht mit 2 Variablen das ganze zu lösen damit man ein Beginn und Ende - Zeichen hat, das funktioniert zwar aber ich krieg immer zwischen den Aufzählungen ein + Zeichen gesetzt. Warum auch immer Ein Zeichen wäre mir als Lösung auch viel lieber!

Gibt es da noch ne Möglichkeit? Evtl. so?

Normaler Text vom User geschrieben.#Aufzählung beginnt# Hier wieder normaler Text #Hier eine Aufzählung# #Hier noch eine Aufzählung usw.# Ende!

Sollte dann so aussehen:
Normaler Text vom User geschrieben
° Aufzählung beginnt
Hier wieder normaler Text
° Hier eine Aufzählung
° Hier noch eine Aufzählung usw.
Ende!

So wärs dann perfekt! Weiß jemand rat?

Gruß, CrYo
 
Ich komme nicht so ganz mit, was du willst. Versuche es bitte etwas anders/genauer zu erklären. Und wenn möglich auch einen kleinen aber relevanten Teil des Codes posten.
 
Hallo renee,

hier mal ein Auszug aus dem Quellcode
Code:
while (@details = $sth->fetchrow_array ())
{
# Zeilenumbruch einfuegen
$details[4]=~ s/\n/<br>/g;
 
# Text nach Aufzaehlungszeichen Splitten
$details[4] =~ s/$zeichen([^$zeichen]+)/<ul><li>$1<\/li><\/ul>/g;
 
print<<ENDE; 
	<tr>
	 <td>$details[2]&nbsp;$details[3]</td>
	</tr>
	<tr>
	 <td><p>$details[4]</p></td>
	</tr>
ENDE
}
Ich hol mir aus der Tabelle die Datensätze ab und schreib sie in das Array @details. In $details[4] steht der Text.

Über eine TextArea kann der Text und über Textfelder die Überschriften in die DB geschrieben werden.

Das Problem ist einfach noch, dass er nun echt perfekt die Aufzählung macht, aber nicht mehr in den normalen ich sag mal "Textmodus" zurück kommt.

Ich muss einfach Text zwischen 2 Zeichen als Aufzählung darstellen können. Alles was nach dem abschließenden Zeichen kommt soll wieder normaler Text sein. Natürlich sollte es auch funktionieren, gleich nach einer Aufzählung die nächste zu machen also praktisch so -> Normaler Text #Aufzählung1# #Aufzählung2# Normaler Text #Aufzählung3# usw.)

Aber mal ein großes Dankeschön. Hier wird einem echt gut geholfen. Hatte schonmal nen Problem und lief auch Klasse. Nur zu empfehlen das Forum :)

Hier noch wie ich mir die Eingabe vorstelle:
Code:
EINGABE:
Das ist ein Test. Dieser Text ist nicht eingerückt. #Jetzt habe ich eine Aufzählung eingerückt.# Nun ist der Text wieder normal.
 
AUSGABE:
Das ist ein Test. Dieser Text ist nicht eingerückt.
 
	Jetzt habe ich eine Aufzählung eingerückt.
 
Nun ist der Text wieder normal.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück