Ankündigung

Einklappen
Keine Ankündigung bisher.

variable nur in <p> suchen

Einklappen

Neue Werbung 2019

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

  • variable nur in <p> suchen

    hi @all,

    ich habe einen text, eine art glossar, der immer aus <h3>fachbegriff und <p>erklaerung besteht. folgendes habe ich vor:

    jede <h3> wird zum anker <-- ist drin
    jeder anker wird in einem 'anker'-array gesammelt <-- is drin
    jeder begriff im anker-array soll (nur) im <p> gesucht und als link auf den anker gesetzt werden <-- hier haenge ich

    versucht habe ich folgendes:
    [$ankerlieele -> alle anker im text]

    $elementhit = '%\<p\> '.$ankerlisteele.' \</p\>%';
    preg_match_all($elementhit, $wysiwigvalue, $elementhits, PREG_SET_ORDER);

    was ich wollte, ist, das in $elementhit alle treffer im <p>-tag gesammelt werden. wie schaffe ich es, das jeder $ankerlisteele im <p>-tag und nur da gesucht wird?

    ich hoffe, das ich so halbwegs klar formuliert habe. dank euch fuer etwaige hilfe und nen sonnigen tach...

    ben

  • #2
    Vergiss RegEx, nimm entweder DOMDocument/xPath oder wenns "live" passieren soll/darf jQuery.

    Kommentar


    • #3
      naja, schau dir mal DOM an und überleg obs damit besser geht.
      regex sind nicht so der brüller zum verarbeiten von html seiten.

      so richtig verstanden was du willst hab ich leider nicht.

      Kommentar


      • #4
        eingegeben wird vom user:

        <h3>fachbegriff 1</h3>
        <p>erklaerung zum fachbegriff 1</p>

        <h3>fachbegriff 2</h3>
        <p>erklaerung zum fachbegriff 2</p>
        ...

        bei der ausgabe wird der text nun jede <h3> auslesen, diese als anker setzen und ein array mit den ankern anlegen (das klappt). falls ein begriff (anker) im text (<p>) vorhanden ist, soll dieser gefunden werden und als link auf den anker ersetzt werden.

        also ein kleines einfaches glossar... was ich nun suche, ist die moeglichkeit, den gesamten text (nur <p>) mit den ankern zu durchsuchen.

        sorry, hoffe ist jetzt verstaendlicher? habt dank fuer die schnellen antworten - ich schau mir eure tips gleich an... ben

        Kommentar


        • #5
          Na wenns ne User Eingabe ist, steht die doch irgendwo im GET oder besser noch POST?!
          Ist das ne textarea oder jeweiles zwei Text-Inputs?

          Kommentar


          • #6
            ein kompletter fliesstext im editor geschrieben... die einzigen unterscheidungen sind die <h3> bzw. <p>-tags
            ben

            Kommentar


            • #7
              Ähm du möchtest den Inhalt von
              Code:
              <p id="stuff_1">Hier steht ein Text aus dem Fachbereich PHP.</p>
              auslesen und "PHP" in
              Code:
              <h3 id="over_stuff_1">PHP</h3>
              eintragen?

              Ist das Korrekt?

              Kommentar


              • #8
                aehm, nein, glaub ich. also, sorry, mein halb/viertelwissen...:

                ich habe einen langen html-text, der aus immerwieder den gleichen sachen besteht, zum einen die ueberschrift <h3> und darunter die erklaerung im <p>. was ich mache, ist, die <h3> auszulesen, diese als anker umzuschreiben. diese anker speichere ich mir ab. nun will ich nur die <p>-tags nach den abgespeicherten ankern durchsuchen und dort die treffer durch den link auf den anker ersetzen.

                was klappt, ist im gesamten fliesstext die <h3>´s auszulesen und diese durch anker zu ersetzen:
                Code:
                $searchh3 = '%\<h3\>(.*)\</h3\>%';
                preg_match_all($searchh3, $wysiwigvalue, $trefferh3, PREG_SET_ORDER);
                $i = '0';
                foreach ($trefferh3 as $trefferh3neu) {
                	$ankerliste[$i] .= $trefferh3neu[1];
                	$anker[$i] = '<h3><a name="'.$trefferh3neu[1].'">'.$trefferh3neu[1].'</a></h3>';
                	$wysiwigvalue = str_replace($trefferh3neu[0],$anker[$i],$wysiwigvalue);
                	$i++;
                }
                jetzt wollte ich den gesamten fliesstext wieder durchsuchen lassen und nur in den <p>-tags nach den ankern suchen/ersetzen:

                Code:
                	$elementhit = '%\<p\> '.$ankerlisteele.' \</p\>%';
                	preg_match_all($elementhit, $wysiwigvalue, $elementhits, PREG_SET_ORDER);
                	$ankerlisteeleneu = '<a href="'.rex_getUrl().'#'.$ankerlisteele.'">'.$ankerlisteele.'</a>';
                	// echo $ankerlisteeleneu;
                	foreach ($elementhits as $elementhits2) {
                		$wysiwigvalue = str_replace($elementhits2,$ankerlisteeleneu,$wysiwigvalue);
                		}
                was mir probleme bereitet, ist dieser ausdruck
                Code:
                $elementhit = '%\<p\> '.$ankerlisteele.' \</p\>%';
                dieser leifert mir leider nicht die treffer der anker in allen <p>-tags....

                ben

                Kommentar


                • #9
                  Ich weiß zwar immer noch nicht, warum das in RegEx sein soll, aber das sollte matchen:
                  Code:
                  /(?<=\<p\>)[^\<]+/iu

                  Kommentar


                  • #10
                    Er will die Indexbegriffe (die in den H-Elementen) in den Absätzen anderer Begriffe suchen.

                    Btw. wurde für solche Fälle die Definitionsliste erfunden.

                    Kommentar


                    • #11
                      danke erstmal,

                      @nikosch - habe ich mir angesehen, aber wie mir das helfen soll versteh ich nicht...
                      @Arne Drews - /(?<=\<p\>)[^\<]+/iu wo muss ich hier die variable $ankerlisteele (array der zu suchenden anker im <p>-text) einbinden? kann das leider kaum lesen...

                      ben

                      Kommentar


                      • #12
                        Dann beschäftige Dich entweder mit RegEx oder doch mit DOMDocument/xPath.

                        Kommentar


                        • #13
                          Inserate, Konzepte und Meinungsumfragen

                          Kommentar


                          • #14
                            habt dank... netter link - ben

                            Kommentar

                            Lädt...
                            X