[REGEX] Preg_replace Hilfe Formulare mit"<textarea>" filtern

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

  • [REGEX] Preg_replace Hilfe Formulare mit"<textarea>" filtern

    Guten Morgen,
    ich weiß nicht wie ich das hier auf die schnelle lösen soll-->

    Ich habe einen Html Text, indem sich mehrere '<form>...' Felder befinden.
    Wichtig ist für mich nur das Formfeld welches auch <Textarea> beinhaltet zu bekommen.
    Sehr einfache Veranschaulichung in der ihr auch virtuell-Online editieren könnt -bitte klicken und mir helfen -->
    http://www.cix88.de/cix_php/demo/cix...20050926092637

    PHP-Code:
    <?php
    echo"
    <html>
    ...
    ...
    <form>
    <select name='new_topic"'>
    <option value="">All Topics</option>
    <option  value="14">Ankündigungen zur Website</option>
    <option  value="15">Aus der Presse</option></form>

    <form action='
    modules.php' method='post'>
    <input type='
    text' name='query'></form>

    <form action='
    eintrag.php' method='post'>
    <input type='
    text' name='eintrag'>
    <textarea name='
    verein'>hier der text</textarea></form>
    ...
    ...
    </html>";
    ?>
    '~(<form[^>]*?>.*?textarea.*?</form>)~is'
    bekomme ich nicht anders zu erwarten alles vom ersten<form> bis zum letzten </form>

    ich weiß auch nicht recht wie ich ihm sagen kann, daß an einer bestimmten Stelle kein </form> vorkommen sein darf ungefähr so-->

    '~(<form[^>]*?>.*?[^</form>].*?textarea.*?</form>)~is'

    . ^ was allerdings nicht klappt da alles was in [] sich befindet er nur einzelnd jedes Zeichen ansieht und optional wählt.
    also, wiegesagt brauch ich als Ausgabe
    :
    Code:
    <form action='eintrag.php' method='post'>
    <input type='text' name='eintrag'>
    <textarea name='verein'>hier der text</textarea></form>
    wegen der textarea

  • #2
    Warum nicht direkt nach textarea suchen ? Oder hast du noch welche ausserhalb der Form-Tags ??
    Code:
    pattern = '/<textarea(.*?)>(.*?)</textarea>/s'
    So was in der Art (ist nicht getestet, nur so aus dem Stegreif). Schau dir auf PHP.net auch mal die Modifikatoren an. Wichtig ist, dass der preg_match nicht greedy ist. Sonst schnappt er sich zuviel Text. Der Modifikator s ist wichtig, denn er führt dazu dass Zeilenendzeichen auch zu den Treffern von . gehören

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      nein, ich brauche auch das Restliche davor und danach noch.

      pattern = '/<textarea(.*?)>(.*?)</textarea>/s'

      hier fehlen mir dann die <form> taggs

      Kommentar


      • #4
        Code:
        pattern = '/<form(.*?)>(.*?)<textarea(.*?)>(.*?)</textarea>(.*?)</form>/s'
        Probiers mal: Habe kein Ahnung ob das so funzt...

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          wenn du mehrere forms hast aufjedenfall ungreedy setzen sonst bekommst du probleme

          Kommentar

          Lädt...
          X