Alexander A.: Reg. Ausdruck

Hallo,

ich möchte mit Hilfe von preg_match alle Wörter bzw. Phrasen in dem Text finden, die nicht in href, mailto, <script></script> usw. stehen.

z.B. die Phrade "Selfhtml Forum" in folgendem Text:

Hallo, das ist ein Selfhtml Forum von Selfhtml Group. Weitere Beiträge von <a href="/Selfhtml_Forum_2.php">Selfhtml Forum finden Sie hier</a>.

Also muss zwar der Text im Link gefunden werden, aber nicht der Text in dem href (URL). In oben angeführten Beispiel ist es ja noch einfach, was aber wenn es sich um ein Wort handelt. Wie kann man das dann machen?

z.B. das Wort "Forum":

Hallo, das ist ein Forum von Selfhtml Group. Weitere Beiträge von <a href="/Forum.php">Forum finden Sie hier</a>.

Gruss Alexander.

  1. gudn tach!

    ich möchte mit Hilfe von preg_match alle Wörter bzw. Phrasen in dem Text finden, die nicht in href, mailto, <script></script> usw. stehen.

    willst du die anzahl der gefundenen begriffe? willst du deren position? oder was moechtest du eigentlich als ergebnis haben? denn wenn du z.b. alle treffer von "forum" in einem string als array aufgelistet haben moechest, waere das ja ziemlich sinnfrei, oder? ;-)

    oder willst du gar nicht nach einem expliziten wort, sondern nach z.b. [fF]oo? oder sowas suchen? (dann waere das array evtl. doch wieder sinnvoll)

    je nachdem, was du naemlich eigentlich erreichen moechtest, sind reg exp gar nicht die beste loesung...

    prost
    seth

    1. willst du die anzahl der gefundenen begriffe? willst du deren...

      ich möchte bestimmte Wörter bzw. Phrasen im Text automatisch mit gelben Hintergrund versehen, also in

      <span style:"background-color:#FFFA24">Gesuchter Begriff</span>

      einschließen.

      Gruss Alexander

      1. gudn tach!

        ich möchte bestimmte Wörter bzw. Phrasen im Text automatisch mit gelben Hintergrund versehen

        ahaa, ok!
        falls du den text als string $html_komplett vorliegen hast, kannst du z.b. mit
        $html_temp=explode ('>', $html_komplett);
        $i=0..length($html_temp){
          $html_teile[$i]=explode ('<', $html_temp[$i]);
        }

        oder einfach mit
        $html_teile=preg_split("/[<>]/", $html_komplett);

        den string so zerhacken, dass du deinen regexp (oder noch besser, weil schneller: str_replace()) nur noch auf manche teile anwenden brauchst.

        im ersten fall waeren die relevanten teile $html_teile[$i][0], im zweiten fall wohl $html_teile[2*$i], da alle anderen teile html-kram waeren.

        vorsicht: das geht nur, wenn der code sauber und frei von javascript oder aehnlichem ist, denn js-code wie if(a<b) ... kann alles ueber den haufen werfen.

        ich habe den kram da oben zwar noch nicht ausprobiert, aber wuerde es mal so versuchen.

        eine andere moeglichkeit besteht darin, den string zeichenweise durchzuackern und immer bei einem '<' bloss auf's nachste '>' zu warten, und sonst nach dem suchbegriff zu suchen.

        in jedem fall sind jedoch afais regexp gar nicht noetig und evtl. sogar eher behindernd.

        prost
        seth

        1. gudn tach!

          $i=0..length($html_temp){

          hihi, ist natuerlich nur pseudo-code... haette auch gleich die for-schleife hinschreiben koennen...

          prost
          seth