Vorgegebene Zeichenkette inkl Wiederholungen feststellen

bofh1337

Erfahrenes Mitglied
Moin :D
Ich muss noch doch mal ein Post hier machen, bevor ich vollkommen durchdrehe und die Nerven verliere:

Ich bin jetzt schon fast 4 Stunden damit beschäftigt, eine Zeichenkette anhand eines Strings vernünftig zu erkennen:

Die Zeichenkette wäre zb.:

jjfjsds***jshfs***76798
oder
jjfjsds**jshfs**76798

Jetzt will ich über Preg-match/Split feststellen, wie oft das Zeichen (*) hintereinander kommt und wie oft diese Wiederholung ist.

Also feststellen ob es 2 x * oder 3 x * hintereinander sind, dabei muss die Wiederholung der ** oder *** genau 2 x vorkommen.

Sollte der String jetzt so aussehen:

jjfjsds*jshfs***76798
oder
jjfjsds***jshfs*76798
oder
jjfjsdsjshfs76798

Soll das erkannt werden und dementsprechen ein Fehler abgefangen werden könne.

Weiss da jemand von euch weiter?
Ich stehe hgier kurz vor einem Herzinfarkt :D
 
Code:
^[^\*]+(?:[\*]{3}[^\*]+[\*]{3}|[\*]{2}[^\*]+[\*]{2})[^\*]+$
Mit (?:.....|......) hab ich da ein oder gemacht...
 
Code:
^[^\*]+(?:[\*]{3}[^\*]+[\*]{3}|[\*]{2}[^\*]+[\*]{2})[^\*]+$
Mit (?:.....|......) hab ich da ein oder gemacht...

So oder so ähnlich habe ich es auch gehabt, ich hab jetzt mal deins genommen, da war am Anfang auch eine Meldung vom Profiler:

Warning: preg_match() [function.preg-match]: Unknown modifier '\' in /var/www/httpdocs

Danach habe ich die Klamotte (3er und 2er Erkennung) mal getrennt, damit ich unterschiedliche Funktionen zu weiterverarbeitung aufrufen kann, jetzt sieht es so aus und läuft ohne Meldungen :)

PHP:
	if (preg_match('/^[^\*]+([\*]{3}[^\*]+[\*]{3})[^\*]+$/', $data))
	{
		$this->base->prod->update($data);
	}
	elseif (preg_match('/^[^\*]+([\*]{2}[^\*]+[\*]{2})[^\*]+$/', $data))
	{
		$this->base->prod->check($data);
	}
	else
	{
		$this->base->prod->permission(0);
	}

Was mir nur etwas komisch vokommt, ist das ich die komplette Klamotte "übergeben" muss, ich habe immer angenommen, das ich nur die jeweiligen Suchmuster so angeben muss.....naja, man lernt nie aus :D
Danke dir :)
 
Zuletzt bearbeitet:
Zurück