auslesen eines best. Textteiles

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • auslesen eines best. Textteiles

    Hallo @ll

    ich bin mal wieder nach stundenlangem googlen etwas am verzweifeln.

    Ich habe folgendes Problem:

    Der User gibt in einem Textfeld seinen Text inkl. html-Code ein. Seperat wählt er ein Bild aus, welches dann später in den Text eingebettet werden soll.

    In der Ausgabe sieht es dann so aus:

    PHP-Code:
         echo '<img src="images/platzhalter.png" alt="Platzhalter" width="300" height="200" border="0" align="left" /> '.$text
    so weit so gut. Wenn der User aber mit Absatzformat arbeitet, rutscht das Bild im Layout weg weil:

    PHP-Code:
    <img src="images/platzhalter.png" alt="Platzhalter" width="300" height="200" border="0" align="left" />
    <
    p>Text text text text ....</p
    ich bräuchte aber:

    PHP-Code:
    <p><img src="images/platzhalter.png" alt="Platzhalter" width="300" height="200" border="0" align="left" />
    Text text text text ....</p
    Nun zu meiner Frage:

    Wie kann ich aus dem Eingabetextfeld den ersten (alle weiteren im Text vorhandenen interessieren nicht) <p> auslesen um ihn in einer Variablen zu speichern?

    der <p> ist auch ab und an mit einer Klasse belegt: Bsp. <p class"absatz1">

    Ich wollte einen Suchbefehl der nach dem 1. < und dem 1. > sucht und mir dann von < bis > als Wert für die Variable zur Verfügung stellt.

    Weiß jemand von euch wie ich das am besten anstellen kann?

    Vielen Dank schon einmal,
    Mira

  • #2
    Z.B. so:
    PHP-Code:
    echo '<p><img src="images/platzhalter.png" alt="Platzhalter" width="300" height="200" border="0" align="left" /> '.
    str_replace('<p>','',$text); 
    Btw: Du arbeitest immer noch mit Bildern als Abstandshalter? Das ist doch finsterste Steinzeit. Es sei denn, das ist kein "blank.gif"-Ersatz sondern erfüllt eine sinnvolle Funktion..

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      *schmunzel* das ist doch nur für hier, ich hätte auch den Namen eines richtigen Bildes nehmen können.

      Im Orginalscript steht an dieser Stelle das Bild des Users.

      Kommentar


      • #4
        hm, ich glaub ich hab mich oben etwas "blöd" ausgedrückt.

        der p-Tag steht in der Variablen, also

        PHP-Code:
        $text '<p>Text text text text ....</p>'
        bzw.

        PHP-Code:
        $text '<p class="absatz1">Text text text text ....</p>'
        die Variable $text soll also vom 1. einleitenden p-Tag "befreit" werden und dieser soll in einer neuen Variablen gespeichert werden.

        Kommentar


        • #5
          Hallo,

          so könnte es z. B. gehen:

          PHP-Code:
              $bild '<img src="/foo.bar" alt="..." />'// Beispiel
              
          $text '<p class="...">...</p><p class="...">...</p>'// Beispiel
              
          $text preg_replace("!^\s*<p([^>]*)>!""<p\\1>" $bild$text);
              echo(
          $text); 
          Gruß,

          Amica
          Zuletzt geändert von AmicaNoctis; 29.09.2009, 11:45.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Vielen vielen Dank!

            Es funktioniert problemlos

            Kommentar


            • #7
              hm, schade. Habe eines vergessen:

              Wenn der User keinen p-Tag benutzt bekomme ich jetzt keine Anzeige mehr

              wie bekomme ich das über eine if Abfrage hin????

              Kommentar


              • #8
                Dann erzähl doch mal, was für User-Eingaben theoretisch möglich wären. Erst dann können wir dich beraten, wie man damit am besten umgeht. Bis jetzt war immer nur von p-Elementen die Rede, daher habe ich mich auch nur darauf bezogen.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Der User gibt seinen Text entweder mit dem p-Tag ein oder einfach nur den Text.

                  Ausgelesen werden muss also wirklich nur der 1. P-tag und wenn er vorhanden ist mit Deinem ersten Hilfecode

                  PHP-Code:
                      $bild '<img src="/foo.bar" alt="..." />'// Beispiel
                      
                  $text '<p class="...">...</p><p class="...">...</p>'// Beispiel
                      
                  $text preg_replace("!^\s*<p([^>]*)>!""<p\\1>" $bild$text);
                      echo(
                  $text); 
                  versetzt werden. Ansonsten soll einfach nur das Bild und dann erst der Text angezeigt werden.

                  Danke übrigens, dass Du mir hilfst

                  Kommentar


                  • #10
                    PHP-Code:
                        $bild '<img src="/foo.bar" alt="..." />'// Beispiel
                        
                    $text '<p class="...">...</p><p class="...">...</p>'// Beispiel
                        
                    $text preg_replace("!^\s*([^<]+)!""<p>\\1</p>"$text); // NEU
                        
                    $text preg_replace("!^\s*<p([^>]*)>!""<p\\1>" $bild$text);
                        echo(
                    $text); 
                    Der Benutzer kann also HTML oder Text eingeben. Wenn er Text eingibt, müssten ja eigentlich vorher generell noch die Zeilenumbrüche behandelt werden, oder?
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      ich probiere es gleich aus dankeschön

                      und

                      ja, es gibt 2 Arten von Eingaben.

                      a) arbeiten mit dem p-Tag

                      und b) arbeiten nur mit <br />

                      da das <br /> aber nicht am Anfang steht, spielt es für diese Abfrage keine Rolle.

                      Kommentar


                      • #12
                        *jubel*

                        es klappt. Noch einmal vielen, vielen Dank

                        Kommentar


                        • #13
                          Das klingt aber gar nicht gut! Dass deine Benutzer dann auch sowas eingeben können ist dir aber schon bewusst, oder?:

                          Code:
                          Erst mal etwas Text <script type="text/javascript">alert("Seite gehackt!");</script> und noch etwas Text.
                          Statt des alert funktioniert natürlich auch ganz böser JS-Code.
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #14
                            danke für den Hinweis

                            die betreffende Seite liegt in einem Passwortgeschützten Bereich, zu dem nur 3 Leute Zugriff haben.

                            Alle 3 kommen ohne weiteres an den Quelltext bzw. die Orginaldateien ran.

                            Daher ist die jetzige Lösung für diesen Fall völlig ausreichend.

                            Kommentar


                            • #15
                              Zitat von Miranda Beitrag anzeigen
                              Daher ist die jetzige Lösung für diesen Fall völlig ausreichend.
                              Das empfinde ich als etwas leichtsinnig. Nur weil ledeglich 3 Leute das PW kennen heißt es nicht das nicht ein Vierter an das PW dran kommt, wenn er unbedingt will. Der hat dann keinen Zugriff zur Originaldatei, und wird sich über eine derartige Steilvorlage freuen.

                              Wenn das System in einem lokalem Netzwerk ohne Internetanbindung läuft dann kann man drüber reden weil die Gefahr eingrenzbar ist. Sobald das System Internetkontakt hat sollten alle Benutzereingaben so gut abgesichert werden wie es nur möglich ist.

                              Kommentar

                              Lädt...
                              X