Cookie-Variablen und RegExp

chrisslh

Grünschnabel
Hallo,

hab ne Frage zu ner kleinen Javascript-Funktion die mir gerade etwas Kopfzerbrechen macht.

Ich biete meinen Benutzern verschiedene Funktionen an.
Die Funktionen beziehen sich auf einen Artikel.
Als Gedächtnisstütze für die Benutzer möchte ich anzeigen, wann sie diese Funktion das letzte mal ausgeführt haben.
Für das ganze schreibe ich Variablen in nen Cookie mit dem Namen des Artikels, der jeweiligen Funktion und dem Ausführungsdatum.

Code:
// Ablaufdatum des Cookies auf eine Stunde setzen
var ablauf = new Date();
var time = new Date();
var expires = ablauf.getTime() + (5 /*Tag*/ * 24 /*Stunden*/ * 60 /*Minuten*/ * 60 /*Sekunden*/ * 1000 /*Millisekunden*/);
ablauf.setTime(expires);
document.cookie =  artikel + "_" + type + "=" + time.getTime() + "; expires=" + ablauf.toGMTString();

Es gibt vier Funktionen, somit sieht das Cookie nach Ausführung aller Funktionen z.B. so aus.
Code:
artikel1_type1=1144046564587; artikel1_type2=1144046604599; artikel1_type3=1144046601666; artikel1_type4=114404660990;

Beim nächsten Besuch der Seite wird nun anhand des Artikels abgefragt welche Funktionen wann ausgeführt wurden.
Die Zeiten sollen in irgendwelchen input-Feldern angezeigt werden...das ist nicht das Problem.
Hier die Funktion mit der ich meine Time-Codes abrufen möchte. Die Funktion "getcookie" wird viermal mit dem zugehörigen Artikel und der jeweiligen Type aufgerufen.

Code:
function getcookie (artikel, type)
	{
		var cookieinhalt = "" + document.cookie;
		var auslesen = 'cookieinhalt.match(/artikel + '_' + type + '=(\\d.+)/)';
		eval(auslesen);
		var wert = unescape(RegExp.$1);

// für mich zur Kontrolle ne alert-Ausgabe
		alert (cookieinhalt + " - " + auslesen + "\n -> Wert " + wert);

	}

Das Problem ist jetzt aber, das mir nicht nur der Time-Code ausgegeben wird, sondern stets alle Zeichen ab dem timecode.

Hier die Ergebnisse:

alert bei type1:
Code:
1144046564587; artikel1_type2=1144046604599; artikel1_type3=1144046601666; artikel1_type3=114404660990;

alert bei type2:
Code:
1144046604599; artikel1_type3=1144046601666; artikel1_type3=114404660990;

alert bei type3:
Code:
1144046601666; artikel1_type3=114404660990;

alert bei type4:
Code:
114404660990;

Ich habe auch schon mit (.+) oder mit \B versuche gemacht, irgendwie schaffe ich es nicht, die Abfrage richtig einzugrenzen.
Wie schaffe ich es nur den Time-Code (vergl. alert bei type4) zu erhalten?

Vielen Dank für Eure Hilfe.
 
Hi,

versuch mal den regulären Ausdruck mit exec statt mit match anzuwenden.
Ausserdem ersetze im reg. Ausdruck .+ durch +.

Folgendes Konstrukt liefert mir das gewünschte Ergebnis:
Code:
function getcookie (artikel, type){
  var cookieinhalt = "" + strCookie; //document.cookie;
  var strPattern = eval("/"+artikel+"_"+type+"=(\\d+)/");
  strPattern.exec(cookieinhalt);
  var wert = unescape(RegExp.$1);

// für mich zur Kontrolle ne alert-Ausgabe
  alert (cookieinhalt + " - " + strPattern + "\n -> Wert " + wert);
}
Ciao
Quaese
 
Da sag ich mal vielen Dank und drücke meine Begeisterung aus!
Super schnelle Antwort und funktionieren tuts auch.
:p

Grüße
Chrisslh
 

Neue Beiträge

Zurück