kostenloser Webspace werbefrei: lima-city


Javascript: Wörter auf einer Seite zählen

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Hallo zusammen,

    ich habe folgendes Problem:
    Ich habe ein PHP Dokument das einen HTML Code erzeugt in dem die Wörter gezählt werden sollen.
    Das Problem dabei ist, dass sich das HTML Dokument immer verändert und dabei auch die Namen aller Divs usw.

    Gibt es eine Möglichkeit trotzdem alle Wörter die auf dieser HTML Seite stehen zu zählen?

    MfG
    Fr3z3r
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Mit Wörtern meinst du was?
    Also, nur alphanumerisce Zeichen? Nur das Alphabet?

    Wie möchtest du es zählen? Mit PHP? Mit JavaScript?

    Dem Thema nach zu urteilen letzeres.

    Also, ein Ansatz:

    Du iterierst dich mir JavaScript durch den Gesammten DOM-Baum (kannst ja <head> auslassen, wenn du den nicht brauchst und nur den body durchgehen). Wie du das genau anstellst musst du sehen, JS stellt aber viele DOM-Manipulationsmethoden zur Verfügung (sollts Probleme geben hilft man dir hier sicherlich). Dann schreibst du alles in einen String. Hier mal Ausschnitte:

    var myString = "";

    while(AlleKnoten) {
    myString += " " + TextDesAktuellenDomObjekts;
    }

    Das while ist hier nur symbolisch gemeint, nur um das prinzip klar zu machen. Das du also immer den jeweiligen Text mit ner Lücke davor anhängst.
    Dann kannst du nähmlich an diesen Lücken die wörter trennen:
    var WordArray = myString.split(" ");
    Jetzt sind alle Wörter in nem Array. Das kanst du jetzt ganz normal zählen mit WordArray.length;
  4. c****s

    Das Zählen aller Wörter geht auch ohne Iteration oder Rekursion über alle Nodes. Der body-Node hat als innerHTML ja seinen Inhalt und somit auch alle Kinderknoten und deren Inhalt. Folgender Ausdruck lieft die Anzahl der Wörter eines HTML-Dokuments unter folgenden Prämissen:
    - Der Body-Tag hat die ID "body"
    - Ein Wort ist eine beliebige Folge von Nichtleerzeichen.
    (" " + document.getElementById ("body").innerHTML + " ").replace (/(<[^>]*?".*"[^>]*?>)/g, " ").replace (/<[^>]*?>/g, " ").split (/[\s]+/).length - 2


    Zur Erklärung:
    Zuerst plenke ich den Inhalt vorne und hinten mit einem Space, damit ich später sichergehen kann, dass am Anfang und Ende mindestens ein weißer Charakter steht.
    Dann ersetze ich alle Tags, die Strings enthalten durch ein Leerzeichen. Somit stelle ich sicher, dass im nächsten Schritt die Tags nicht fälschlicher weiße an einer schließenden spitzen Klammer (>) innerhalb eines Strings enden.
    Dann ersetzte ich alle Tags durch ein Leerzeichen.
    Dann zertrümmere ich den String an jeder Gruppe von weißen Zeichen, die mindestens 1 Zeichen lang ist.
    Schlussendlich ziehe ich von der Anzahl aller gefundenen Trümmer 2 ab, da ich am Anfang ja geplenkt habe.

    Ein Beispiel (zu finden hier: http://census.lima-city.de/count.html):
    <html>
    	<head>
    		<title></title>
    		<script language="javascript">
    			function count ()
    			{
    				content = " " + document.getElementById ("body").innerHTML + " ";
    				alert (content);
    				content = content.replace (/(<[^>]*?".*"[^>]*?>)/g, " ");
    				alert (content);
    				content = content.replace (/<[^>]*?>/g, " ");
    				alert (content);
    				wordcount = content.split (/[\s]+/).length - 2;
    				alert (wordcount);
    			}
    		</script>
    	</head>
    	<body id="body">
    		Uno dos tres cuatro
    		<div name="egal">
    			cinco seis siete ocho
    			<div name="auchegal" id="nochegaler">
    				nueve diez once doce
    			</div>
    			<p>
    				trece catorce "quince dieciseis"
    			</p>
    		</div>
    		<div onClick="javascript: alert ('awd>adw<awdwd>')">
    			diecisiete dieciocho diecinueve veinte
    		</div>
    		<a href="javascript:count ( )">count</a>
    	</body>
    </html>


    EDIT: Meine Aussage "ohne Iteration" ist falsch. replace und split iterieren natürlich über den String. Es muss heißen "ohne dass Du zu Fuß iterierst, sondern die Regex-Engine von javascript iterieren lässt".

    Beitrag zuletzt geändert: 1.8.2009 11:45:12 von census
  5. Ich hätte noch eine elegante Lösung in php (auch ohne php-Kentnisse).

    -Das php-Framework "Snoopy" runterladen...
    http://sourceforge.net/projects/snoopy/
    -...und im selben Ordner installieren.
    -Der Html-Seite die endung .php geben
    -und folgenden Code eingeben :

    <?php
    // Die folgenden Zeilen rufen den Inhalt der Seite www.php.net ab und
    // zeigen den Inhalt als Text an.
    //und die Anzahl an Zeichen
    include "Snoopy.class.php";
    $snoopy = new Snoopy;
    $snoopy->fetchtext("http://www.php.net/");
    $derText = $snoopy->results;
    echo $derText."<br><br>";
    echo str_word_count($derText); //
    ?>


    Edit: Nach dem Hinweis von Census habe ich nochmal den Code Zensiert, danke.
    Da es grundsätzlich schwer ist genau zu definieren was ein Wort ist, kann es natürlich sein das hier noch Verbesserungsbedarf besteht. (Bin schon ganz vorsichtig geworden ;-))


    Beitrag zuletzt geändert: 1.8.2009 13:35:14 von simuliertes
  6. c****s

    simuliertes schrieb:
    echo strlen($derText);



    Liefert das wirklich die Anzahl der Wörter im Text oder nur die Anzahl der Zeichen?
  7. census schrieb:
    simuliertes schrieb:
    echo strlen($derText);



    Liefert das wirklich die Anzahl der Wörter im Text oder nur die Anzahl der Zeichen?


    Ups, ja Census ja_ha...
    Flüchtigkeitsfehler, sorry das liefert natürlich nur die Anzahl der Zeichen, ich editiere das....
  8. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Danke Leute ihr habt mir bisher sehr geholfen =)
    Nun stehe ich vor folgendem Problem.

    Ich möchte aus einem belibigen HTML Dokument bestimmte Wörter ersetzen:

    <?
    // Snippet MyWords Start
    
    $Link = "LinkZuMeinerSeite";
    //
    $Config = $Link."config/config.php";
    $Function = $Link."config/functions.php";
    $TT = $Link."Tooltip/wz_tooltip.js";
    
    include_once($Config);
    include_once($Function);
    echo '<script type="text/javascript" src="'.$TT.'"></script>';
    $connectionid = mysql_connect ($mysqlserver, $mysqluser, $mysqlpassword) or die("Keine Verbindung zur Datenbank");
      mysql_select_db($db, $connectionid);
    
    $Words = db_query("SELECT * FROM `Links` WHERE `Link`<>'%s' and (Views <= BookedViews or BookedViews = 0)", "");
    
    echo '<script type="text/javascript">';
    echo 'function WordAd() {';
    echo 'var words = new Array();';
    echo 'var tooltips = new Array();';
    echo 'var links = new Array();';
    $i = 0;
    while ($row = mysql_fetch_array($Words)) {
      echo 'words['.$i.'] = "'.$row['Wort'].'"; ';
      echo 'tooltips['.$i.'] = "'.$row['Tooltip'].'"; ';
      echo 'links['.$i.'] = "'.$row['Link'].'"; ';
      $i++;
    }
    ?>
      var content = document.body.innerHTML;
          content = content.replace(words[i], '<a href="' + links[j] + '" onmouseover="Tip("' + tooltips[j] + '")" onmouseout="UnTip()">' + words[j] + '</a>');
      document.body.innerHTML = "";
      document.write("content");
    
    </script>
    
    <!--
    // Snippet MyWords Ende
    -->


    Soweit bin ich nun gekommen. Das Problem ist nicht alle Wörter werden ersetzt undauch wenn ich im body onload die Function aufrufe wird sie in einer Schleife ausgeführt...

    Jemand ne Idee?
  9. c****s

    Ich bin jetzt völlig verwirrt? Ist das PH-Script oder Java-HP?

    Und wo kommen i und j im Javascriptteil her?
  10. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Hmm hast recht das ist Mist was ich da gemacht hab...

    $connectionid = mysql_connect ($mysqlserver, $mysqluser, $mysqlpassword) or die("Keine Verbindung zur Datenbank");
      mysql_select_db($db, $connectionid);
    
    $Words = db_query("SELECT * FROM `Links` WHERE `Link`<>'%s' and (Views <= BookedViews or BookedViews = 0)", "");
    
    echo '<script type="text/javascript">';
    echo 'function WordAd() {';
    echo 'var words = new Array();';
    echo 'var tooltips = new Array();';
    echo 'var links = new Array();';
    $i = 0;
    while ($row = mysql_fetch_array($Words)) {
      echo 'words['.$i.'] = "'.$row['Wort'].'"; ';
      echo 'tooltips['.$i.'] = "'.$row['Tooltip'].'"; ';
      echo 'links['.$i.'] = "'.$row['Link'].'"; ';
      $i++;
    }
    ?>


    So also hier übergebe ich von PHP Arrays an JS

    Arrays sind words, tooltips und links

    Nun möchte ich in einem belibigen Text auf der Seite nach einem Wort das == einem Eintrag in words ist (i für Zählschleife

    Daraufhin sollte das irgentwie so ausgegeben werden:

    content = content.replace(words[i], '<a href="' + links[j] + '" onmouseover="Tip("' + tooltips[j] + '")" onmouseout="UnTip()">' + words[j] + '</a>');


    Hat jemand eine Idee wie ich das in einer Schleife überprüfen kann und dann den Text auf der Seite ersetzten kann?
  11. c****s

    Das ist nicht so einfach wie es scheint, da du mehrere Dinge berücksichtigen musst:

    A) Du darfst nur Wörter im Text ersetzen, aber keine Wörter in Tags. Wenn du z.B. immer "java" durch "gurke" ersetzen willst, dann darfst du nicht "<a href="javascript:doIt()"> durch "<a href="grukescript:doIt()">" ersetzen.
    B) Zweitens darfst du jedes Wort nur einmal ersetzen, weil du sonst in eine Endlosschleife laufen kannst.

    Das ganze kann man so realisieren. Die Arrays hab ich hier händisch reingeschrieben, aber die kriegst du ja über PHP:

    <html>
    	<head>
    		<title></title>
    		<script language="javascript">
    			function replace ()
    			{
    				//DAS HIER KOMMT VON PHP
    				words = new Array ("test", "das", "eins");
    				replace ["test"] = "<a href=\"test.html\" title=\"Das ist ein Test\">";
    				replace ["das"] = "<a href=\"das.html\" title=\"Das ist ein Artikel\">";
    				replace ["eins"] = "<a href=\"eins.html\" title=\"Das ist eine Zahl\">";
    				//PHP ÜBERNAHME ENDE
    				
    				content = document.getElementById ("body").innerHTML;
    				regex = new RegExp ("(?:>|^)([^<]*?)((" + words.join (")|(") + "))[^>]*?(?:<|$)", "i");
    				while ( (result = content.search (regex) ) != -1)
    					content = content.substring (0, result + RegExp.$1.length + ( (result == 0) ? 0 : 1 ) ) + replace [RegExp.$2.toLowerCase ()] + RegExp.$2.substring (0, 1) + "¶" + RegExp.$2.substring (1) + "</a>" + content.substring (result + RegExp.$1.length + 1 + RegExp.$2.length);
    				content = content.replace (/¶/g, "");
    				document.getElementById ("body").innerHTML = content;
    			}
    		</script>
    	</head>
    	<body id="body">
    		Das <a name="eins"> ist </a>ein Test um das <tag Test> ganze auszuprobieren.<br> null eins Test zwei das drei das vier Test eins.
    		<p><a href="javascript:replace()" title="Dieses 'Test' wird nicht ersetzt.">replace</a></p>eins
    	</body>
    </html>


    Beitrag zuletzt geändert: 1.8.2009 17:33:37 von census
  12. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Ersteinmal danke für deine Hilfe. Dein Beispiel functioniert wunderbar nur beim Anpassen an mein Script habe ich nun ein Problem:

    Mein Code:
    echo '<script type="text/javascript">';
      echo 'function replace () {';
        echo 'var words = new Array();';
        echo 'var tooltips = new Array();';
        echo 'var links = new Array();';
        $i = 0;
        while ($row = mysql_fetch_array($Words)) {
          echo 'words["'.$row['Wort'].'"];';
          echo 'replace["'.$row['Wort'].'"] = "test";';
          $i++;
        }
        ?>
        content = document.body.innerHTML;
        regex = new RegExp ("(?:>|^)([^<]*?)((" + words.join (")|(") + "))[^>]*?(?:<|$)", "i");
        while ( (result = content.search (regex) ) != -1)
          content = content.substring (0, result + RegExp.$1.length + ( (result == 0) ? 0 : 1 ) ) + replace [RegExp.$2.toLowerCase ()] + RegExp.$2.substring (0, 1) + "¶" + RegExp.$2.substring (1) + "</a>" + content.substring (result + RegExp.$1.length + 1 + RegExp.$2.length);
        content = content.replace (/¶/g, "");
        document.body.innerHTML = content;
    	}
      </script>


    Dies gibt mir folgendes aus:

    <script type="text/javascript">function replace () {var words = new Array();var tooltips = new Array();var links = new Array();words["Ich"];replace["Ich"] = "test";words["Du"];replace["Du"] = "test";words["Lorem"];replace["Lorem"] = "test";words["dolor"];replace["dolor"] = "test";words["takimata"];replace["takimata"] = "test";words["MyWords"];replace["MyWords"] = "test";words["dolore"];replace["dolore"] = "test";words["lose"];replace["lose"] = "test";    content = document.body.innerHTML;
        regex = new RegExp ("(?:>|^)([^<]*?)((" + words.join (")|(") + "))[^>]*?(?:<|$)", "i");
        while ( (result = content.search (regex) ) != -1)
          content = content.substring (0, result + RegExp.$1.length + ( (result == 0) ? 0 : 1 ) ) + replace [RegExp.$2.toLowerCase ()] + RegExp.$2.substring (0, 1) + "¶" + RegExp.$2.substring (1) + "</a>" + content.substring (result + RegExp.$1.length + 1 + RegExp.$2.length);
        content = content.replace (/¶/g, "");
        document.body.innerHTML = content;
    	}
      </script>


    Doch beim onload oder auch ein Klick auf "<a href="javascript:replace()" title="Dieses 'Test' wird nicht ersetzt.">replace</a>" bringt nichts...
    Hast du eine Idee wo bei meiner Anpassung der Fehler liegen könnte?

    Danke im vorraus =)
  13. c****s

    Streiche
    var words = new Array();
    	words["Ich"];
    	words["Du"];
    	words["Lorem"];
    	words["dolor"];
    	words["takimata"];


    Setze:
    var words = new Array();
    	words.push ("Ich");
    	words.push ("Du");
    	words.push ("Lorem");
    	words.push ("dolor");
    	words.push ("takimata");


    Also mach im PHP aus der Zeile
    echo 'words["'.$row['Wort'].'"];';

    folgende Zeile
    echo 'words.push("'.$row['Wort'].'");';



    Beitrag zuletzt geändert: 1.8.2009 18:34:54 von census
  14. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Hmm das hatte ich auch schon, dann bekomme ich aber bei jedem Klick auf replace ein "undefine"
    Die Fehlerkonsole gibt leider auch nix her...
    Link zur Seite: http://xot.ch/MyTestMyLinks/index.php


    Und noch einmal Danke für deine schnelle Hilfe!

    Beitrag zuletzt geändert: 1.8.2009 18:44:12 von fr3z3r
  15. c****s

    Die Keys des replace-Arrays müssen in Kleinbuchstaben sein. Also nicht replace["Lorem"] sondern replace["lorem"]
  16. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    census schrieb:
    Die Keys des replace-Arrays müssen in Kleinbuchstaben sein. Also nicht replace["Lorem"] sondern replace["lorem"]


    Danke es klappt super!

    Noch eine letzte kleine Frage wenn du die mir erlaubst ^^

    Im Text werden Tooltips mit onmouseover="Tip("Hier ist Text!")"
    Nun möchte ich, dass dort keine Wörter ersetzt werden. Wärst du so lieb und würdest den RegExp daraufhin noch erweiterst oder mir einen Link zu diesem Thema zeigen könntest da ich mich damit gar nicht auskenne...

    Nochmals Danke für die Hilfe
  17. c****s

    Mit meinem Code werden die Wörter innerhalb von Tags nicht ersetzt.
    EDIT: Hab mir grad deine Seite angekuckt, das Problem ist nicht, dass meine Regex in die Tags reingeht, sondern dass die öffnenden Tags wohl fehlen. Schau dir lieber nochmal detailliert den Code an.

    Beitrag zuletzt geändert: 1.8.2009 20:27:33 von census
  18. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    <a href='http://de.wikipedia.org' onmouseover="Tip('Das ist ja mal <a href='http://www.google.de' onmouseover="Tip('vvdfg')" onmouseout="UnTip()">voll</a> der Hammer')" onmouseout="UnTip()">


    Das ist der Quelltext. Wenn ich recht sehe wird doch vorne der Tag a geöffnet dann nach "mal" im "Tip" wird das Wort "voll" wieder ersetzt. Oder was hast du gemeint?
  19. c****s

    Hmm, bei meinem Beispieltext:
    <html>
    	<head>
    		<title></title>
    		<script language="javascript">
    			function replace ()
    			{
    				words = new Array ("test", "das", "eins");
    				replace ["test"] = "<a href=\"test.html\" title=\"Das ist ein Test\">";
    				replace ["das"] = "<a href=\"das.html\" title=\"Das ist ein Artikel\">";
    				replace ["eins"] = "<a href=\"eins.html\" title=\"Das ist eine Zahl\">";
    				
    				content = document.getElementById ("body").innerHTML;
    				regex = new RegExp ("(?:>|^)([^<]*?)((" + words.join (")|(") + "))[^>]*?(?:<|$)", "i");
    				while ( (result = content.search (regex) ) != -1)
    				{
    					content = content.substring (0, result + RegExp.$1.length + ( (result == 0) ? 0 : 1 ) ) + replace [RegExp.$2.toLowerCase ()] + RegExp.$2.substring (0, 1) + "¶" + RegExp.$2.substring (1) + "</a>" + content.substring (result + RegExp.$1.length + 1 + RegExp.$2.length);
    				}
    				content = content.replace (/¶/g, "");
    				document.getElementById ("body").innerHTML = content;
    			}
    		</script>
    	</head>
    	<body id="body">
    		Das <a name="eins"> ist </a>ein Test um das <tag Test> ganze auszuprobieren.<br> null eins Test zwei das drei das vier Test eins.
    		<p><a href="javascript:replace()" title="Dieses 'Test' wird nicht ersetzt.">replace</a></p>eins
    	</body>
    </html>

    Hab ich ja auch einen Tooltip der "Diesse 'Test' wird nicht ersetzt" heißt und der wird auch nicht ersetzt, darum wundert mich das alles ein bisschen. Leider hab ich deinen kompletten Sourcecode nicht. Aber das ganze was ich hier schreibe sind ja auch nur Lösungsvorschläge und keine Wahrheiten. Schau dir doch ein bisschen die Regex-API an und bau dir das Ganze so zusammen, wie es dir am besten taugt.

    EDIT: Hab mein Beispiel eben noch mal geändert, auch mit "voll" und "voll der Hammer". Funktioniert.
    REPLACEMENT.PHP
    <html>
    	<head>
    		<title></title>
    		<script language="javascript">
    			function replace ()
    			{
    				words = new Array ("test", "das", "eins", "voll");
    				replace ["test"] = "<a href=\"test.html\" title=\"Das ist ein Test\">";
    				replace ["das"] = "<a href=\"das.html\" title=\"Das ist ein Artikel\">";
    				replace ["eins"] = "<a href=\"eins.html\" title=\"Das ist eine Zahl\">";
    				replace ["voll"] = "<a href=\"eins.html\" title=\"Das ist voll der Hammer\">";
    				
    				content = document.getElementById ("body").innerHTML;
    				regex = new RegExp ("(?:>|^)([^<]*?)((" + words.join (")|(") + "))[^>]*?(?:<|$)", "i");
    				while ( (result = content.search (regex) ) != -1)
    				{
    					content = content.substring (0, result + RegExp.$1.length + ( (result == 0) ? 0 : 1 ) ) + replace [RegExp.$2.toLowerCase ()] + RegExp.$2.substring (0, 1) + "¶" + RegExp.$2.substring (1) + "</a>" + content.substring (result + RegExp.$1.length + 1 + RegExp.$2.length);
    				}
    				content = content.replace (/¶/g, "");
    				document.getElementById ("body").innerHTML = content;
    			}
    		</script>
    	</head>
    	<body id="body">
    		Das <a name="eins"> ist </a>ein Test um das <tag Test> ganze voll auszuprobieren.<br> null voll eins Test zwei das drei das vier Test eins.
    		<p><a href="javascript:replace()" title="Dieses 'Test' wird nicht ersetzt.">replace</a></p>eins
    	</body>
    </html>


    ===========================================================================
    EDIT 2:
    Hier ein voll funktionsfähiges Beispiel online mit Datenbank und allem: http://census.lima-city.de/replace.html
    Das Wortteile ersetzt werden liegt an der Regex und ist gewollt und lässt sich leicht ändern.
    Wie du siehst kommen hier die zuerstenden Wörter auch in den Tooltips vor und kein Problem:

    Den HTML-Code kannst du dir online ankucken.
    Der PHP-Code ist hier:
    <?php
    	mysql_connect ("mysql.lima-city.de", "", "");
    	mysql_select_db ("db_142997_1");
    	mysql_query ("set character set utf8;");
    	echo 'targets = new Array (); prefixes = new Array (); postfixes = new Array (); ';
    	$rs = mysql_query ("select target, link, tooltip from tblReplacement");
    	while ($row = mysql_fetch_assoc ($rs) )
    		echo 'targets.push ("' . $row ['target'] . '"); ' .
    			'prefixes ["' . strtolower ($row ['target'] ) . '"] = "<a href=\\"' . $row ['link'] . '\\" title=\\"' . $row ['tooltip'] . '\\">"; ' .
    			'postfixes ["' . strtolower ($row ['target'] ) . '"] = "</a>"; ';
    ?>


    Beitrag zuletzt geändert: 1.8.2009 22:10:02 von census
  20. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Danke für deine Mühe.
    Doch irgentwie bin ich unfähig und hab es wieder zerschossen...

    Link: http://xot.ch/MyLinks/index.php

    $connectionid = mysql_connect ($mysqlserver, $mysqluser, $mysqlpassword) or die("Keine Verbindung zur Datenbank");
        mysql_select_db($db, $connectionid);
    
      $Words = db_query("SELECT * FROM `Links` WHERE `Link`<>'%s' and (Views <= BookedViews or BookedViews = 0)", "");
    
      echo '<script type="text/javascript">';
      echo 'function replace () {';
        echo 'var words = new Array();';
        echo 'var tooltips = new Array();';
        echo 'var links = new Array();';
        $i = 0;
        while ($row = mysql_fetch_array($Words)) {
          echo 'words.push("'.$row['Wort'].'");';
          echo 'replace["'.strtolower($row['Wort']).'"] = "<a href=\"'.$row['Link'].'\" onmouseover=\"Tip(\"'.$row['Tooltip'].'\")\" onmouseout="UnTip()">'.$row['Wort'].'</a>";';
          $i++;
        }
        ?>
        content = document.body.innerHTML;
        regex = new RegExp ("(?:>|^)([^<]*?)((" + words.join (")|(") + "))[^>]*?(?:<|$)", "i");
        while ( (result = content.search (regex) ) != -1)
        {
          content = content.substring (0, result + RegExp.$1.length + ( (result == 0) ? 0 : 1 ) ) + replace [RegExp.$2.toLowerCase ()] + RegExp.$2.substring (0, 1) + "¶" + RegExp.$2.substring (1) + "</a>" + content.substring (result + RegExp.$1.length + 1 + RegExp.$2.length);
        }
        content = content.replace (/¶/g, "");
        document.body.innerHTML = content;
      }
      </script>


    Ich schau mir morgen mal deine Beispiele an... Wenn jemand bei mir den Fehler sieht wärs natürlich toll ^^
    Jetzt ist zu spät ich geh mich mal aufs Ohr haun


    Edit:
    Der Quelltext wenn man es ausführt...
    <script type="text/javascript" src="Tooltip/wz_tooltip.js"></script><script type="text/javascript">function replace () {var words = new Array();var tooltips = new Array();var links = new Array();words.push("sit");replace["sit"] = "<a href=\"http://xot.ch/MyLinks/newword.php\" onmouseover=\"Tip(\"sitsit\")\" onmouseout="UnTip()">sit</a>";words.push("Lorem");replace["lorem"] = "<a href=\"http://xot.ch/\" onmouseover=\"Tip(\"LoremLorem\")\" onmouseout="UnTip()">Lorem</a>";    content = document.body.innerHTML;
        regex = new RegExp ("(?:>|^)([^<]*?)((" + words.join (")|(") + "))[^>]*?(?:<|$)", "i");
        while ( (result = content.search (regex) ) != -1)
        {
          content = content.substring (0, result + RegExp.$1.length + ( (result == 0) ? 0 : 1 ) ) + replace [RegExp.$2.toLowerCase ()] + RegExp.$2.substring (0, 1) + "¶" + RegExp.$2.substring (1) + "</a>" + content.substring (result + RegExp.$1.length + 1 + RegExp.$2.length);
        }
        content = content.replace (/¶/g, "");
        document.body.innerHTML = content;
      }
      </script>


    Beitrag zuletzt geändert: 1.8.2009 22:58:18 von fr3z3r
  21. c****s

    OK, kopier mal folgendes EINSZUEINS in deine Index.php. Ich hab jetzt sogar deinen Datenbanknamen und die Spaltennamen übernommen. Danach setz irgendwo auf der Seite nen Link auf "javascript:replace()" und lass mich bitte wissen, wie es sich verhält:

    <script language="javascript">
    	function replace ()
    	{
    	<?php
    		$connectionid = mysql_connect ($mysqlserver, $mysqluser, $mysqlpassword) or die ("Keine Verbindung zur Datenbank");
    		mysql_select_db ($db, $connectionid);
    		echo 'targets = new Array (); prefixes = new Array (); postfixes = new Array (); ';
    		$rs = mysql_query ("select Wort, Link, Tooltip from Links");
    		while ($row = mysql_fetch_assoc ($rs) )
    			echo 'targets.push ("' . $row ['Wort'] . '"); ' .
    				'prefixes ["' . strtolower ($row ['Wort'] ) . '"] = "<a href=\\"' . $row ['Link'] . '\\" title=\\"' . $row ['Tooltip'] . '\\">"; ' .
    				'postfixes ["' . strtolower ($row ['Wort'] ) . '"] = "</a>"; ';
    	?>
    		content = document.body.innerHTML;
    		regex = new RegExp ("(?:>|^)([^<]*?)((" + targets.join (")|(") + "))[^>]*?(?:<|$)", "i");
    		while ( (result = content.search (regex) ) != -1)
    			content = content.substring (0, result + RegExp.$1.length + ( (result == 0) ? 0 : 1 ) ) + prefixes [RegExp.$2.toLowerCase ()] + RegExp.$2.substring (0, 1) + "¶" + RegExp.$2.substring (1) + postfixes [RegExp.$2.toLowerCase ()] + content.substring (result + RegExp.$1.length + 1 + RegExp.$2.length);
    		content = content.replace (/¶/g, "");
    		document.body.innerHTML = content;
    	}
    </script>


    Beitrag zuletzt geändert: 2.8.2009 14:39:33 von census
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!