Falls Teil einer Funktion ausgeführt, Wert + 1 rechnen.
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abfragen
anzahl
array
ausdruck
auto
autobus
beispiel
code
dank
feststelle
funktion
guide
match
test
text
textfeld
typ
url
zahl
zeichen
-
Hey, ich habe folgende Funktion:
function simplebb(text) { text = htmlformat(text); var url = 0; var url1 = 0; return text .replace(/\[url\](.*?)\[\/url\]/g, '<a href="$1">$1</a>') .replace(/\[url=([^\]]*?)\](.*?)\[\/url\]/g, '<a href="$1">$2</a>') }
Ich habe also eine Variable für url und url1. Sobald man
oder[url=test.net]test[/url]
eingibt, sollte entweder url1 oder url +1 gezählt werden, damit ich weiss, wieviel mal welches von beiden ausgeführt wird. Wisst ihr wie ich das machen kann, oder habt ihr bessere Ideen, um festzustellen wieviel mal was ausgeführt wird?[url]test.net[/url]
Ich könnte zwar für beide eine eigene Funktion machen, und sobald diese ausgeführt wird am ende noch die Variable +1 zählen, aber da wirds sicher bessere Möglichkeiten geben.
Beitrag zuletzt geändert: 18.6.2012 22:01:39 von moneyprojekt -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo!
Versuchs mal mit match.
Liefert dir ein Array von Ergebnissen und anhand dessen Länge kannst du dann feststellen, wie oft was verwandt wurde.
Lg -
markus-niederbrucker schrieb:
Hallo!
Versuchs mal mit match.
Liefert dir ein Array von Ergebnissen und anhand dessen Länge kannst du dann feststellen, wie oft was verwandt wurde.
Lg
Mit der Funktion kann ich nach einem bestimmten String zb "Auto" suchen lassen, und es liefert mir die anzahl?
Bei mein Auto ist das beste Auto der welt -> 2? -
markus-niederbrucker schrieb:
Nicht ganz, es würde dir ["Auto", "Auto"] liefern. Mit .length kannst du die Anzahl der Elemente im Array dann abfragen und hast somit die Zahl der 'Autos' im Text .
Lg
Okey danke! Bei mir sinds aber keine Wörter, haben also keinen Abstand. Ich muss test.de prüfen. Geht das, wenn dazwischen kein Abstand ist? -
Du testest ja mit Regex, da kannst Du selbst impementieren, was Du brauchst.
Wenn Du Wörter haben willst, kriegst Du Wörter;
wenn Du nach bestimmten Mustern, wie zum Beispiel der TLD suchen willst, kannst Du das auch einfach machen.
Was ich aber nicht verstehe, ist warum Du überhaupt zählen willst, wie oft das vorkommt. Um nur eine bestimmte Menge zuzulassen?
Beitrag zuletzt geändert: 18.6.2012 22:55:41 von tobiworlds -
markus-niederbrucker schrieb:
Klar, du kannst alles Mögliche damit Abfragen. In dem Beispiel würden auch z.B. Automat und Autobus gezählt werden.
Kannst dir ja das hier mal durchlesen, bzw. hast du ja eh schon mit regulären Ausdruck gearbeitet, wie ich sehe, das läuft bei match gleich!
Okey, danke! Einfach so als Test funktionierts super. Wenn ich einen Alert mache, und die Variable ausgebe, bekomm ich die richtige Anzahl, aber sobald ich es als Text ausgeben will, gibts nichts aus. Dies ist meine ganze Funktion:
function doformat() { var src = document.getElementById('source-text'); //Textfeld für die eingabe. var dst = document.getElementById('formatted-text'); //Textfeld in dem die der Text ausgegeben werden soll. var chr = document.getElementById('visible-chars'); //Textfeld in dem die Textlänge ausgegeben werden soll. var chr1 = document.getElementById('link1'); //Textfeld in dem die Anzahl ausgegeben werden soll. var chr2 = document.getElementById('link2'); //Textfeld in dem die Anzahl ausgegeben werden soll. var Url11 = src.match(/\[url\](.*?)\[\/url\]/g); //Für den Url Typ 1 die Anzahl var Url22 = src.match(/\[url=([^\]]*?)\](.*?)\[\/url\]/g); //Für den Url Typ 2 die Anzahl dst.innerHTML = htmltext.value; //Gibt Text aus chr.innerHTML = html2plain(htmltext).length; //Gibt Textlänge aus chr.innerHTML = Url11; //Gibt Link Anzahl 1 aus chr.innerHTML = Url22; //Gibt Linikanzahl 2 aus }
Html Felder:
<span id="formatted-text"></span> <span id="link1"></span> <span id="link2"></span> <textarea id="source-text" name="Text"onkeyup="doformat();" rows="9" cols="41"></textarea>
Funktioniert nicht, könnt ihr mir helfen? -
Also, ich seh da mal zwei wesentliche Probleme:
dst.innerHTML = htmltext.value; //Gibt Text aus chr.innerHTML = html2plain(htmltext).length; //Gibt Textlänge aus
Woher kommt 'htmltext'? Globale Variable? Oder soll das die textarea sein?
Und hier:
chr.innerHTML = html2plain(htmltext).length; //Gibt Textlänge aus chr.innerHTML = Url11; //Gibt Link Anzahl 1 aus chr.innerHTML = Url22; //Gibt Linikanzahl 2 aus
überschreibst du zweimal den Text, den du vorher hineingeschrieben hast. Wenn du alle drei Sachen da drin stehen haben willst, solltest du zumindest += statt = verwenden. Und für die Anzahl solltest du Url11.length und Url22.length verwenden.
Vielleicht läufts dann.
lg -
Woher kommt 'htmltext'? Globale Variable? Oder soll das die textarea sein?
Oh sorry, hab da eine Zeile gelöscht, die die htmltext Variable definiert, das bisschien verwirrend wäre, wegen anderen Funktionen die ich definiert habe.
überschreibst du zweimal den Text, den du vorher hineingeschrieben hast
Nochmal sorry, hab die Zeilen davor gelöscht, und mit alert ausprobiert, obs etwas ausgibt, und im Forum noch schnell rein editiert. :P
So hab ichs:
function doformat() { var src = document.getElementById('source-text'); var dst = document.getElementById('formatted-text'); var chr = document.getElementById('visible-chars'); var chr1 = document.getElementById('link1'); var chr2 = document.getElementById('link2'); var htmltext = simplebb(src.value); dst.innerHTML = htmltext; chr.innerHTML = html2plain(htmltext).length /50; var Url11 = src.match(/\[url\](.*?)\[\/url\]/g); var Url22 = src.match(/\[url=([^\]]*?)\](.*?)\[\/url\]/g); chr1.innerHTML = Url11; chr2.innerHTML = Url22; }
-
Ok, so is' schon klarer
Allerdings bleibt noch .length an url11 bzw. url22, oder gleich an die match-Funktionen anzuhängen.
Darüber hinaus glaube ich, auch wenn ich da kein Profi bin, du hast in deinen Regex-Ausdrücken zumindest ein paar Unschönheiten:
url11: bei *? solltest du das ? weglassen, weil du zwischen den [url]-tags nicht bloß 0 oder 1 Zeichen haben willst, nehm ich an. Bei url22 selbiges, außerdem ist ^ hier ziemlich sicher falsch, da dieses Zeichen den Beginn markiert.
Besser wäre:
url11:/\[url\].*\[\/url\]/gi
url22:/\[url=.*\].*\[\url\]/gi
Bin aber wie gesagt kein Regex-Profi, gibt also sicher bessere Wege.
Beitrag zuletzt geändert: 19.6.2012 21:46:56 von markus-niederbrucker -
Regex funktioniert, aber danke für die Verbesserung. Kanns atm nicht ausprobieren, hab ein unschönes Problem.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage