"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Hilfe bei Regular Expression

grOOvekill@ 11.12.2007 - 21:02 991 13
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
S'gott,

also ich versuch jetzt echt schon eine ganze Stunde eine Regular Expression zustande zu bringen und scheitere.

Ich bekomme in php anhand einer Schleife Datensätze ausgelesen, die sich in
Code: PHP
$dataset['bla']
befinden.

Nun möchte ich eben diese Datensätze darauf überprüfen, ob darin dieser String enthalten ist:

ma27zda

Das Problem dabei ist, das in diesem String die ersten zwei und die letzten drei Zeichen immer ma und zda (richtig, mazda) ergeben, sich dazwischen aber immer zwei oder dreistellige Zahlen befinden.

ma130zda
ma548zda
ma12zda
ma666zda

Nun wüßte ich gern, wie ich diesen String anhand Regular Expressions checken kann. Sprich: Sind die ersten zwei Zeichen "ma" und die letzten drei zeichen "zda"?

Ich krieg's einfach nicht hin. Kann mir da mal jemand aushelfen?

tia!
Bearbeitet von grOOvekill@ am 11.12.2007, 22:00

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
die regex sollte sein:

Code: PHP
^[m][a][0-9]*[z][d][a]$

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
Öhm.. und welche Funktion verwende ich nun am sinnvollsten dafür? Ich will ja eigentlich nur wissen ob "ma*zda" dasteht, mehr nicht. Was wär denn da am geschicktesten?

edit:

Okay, ich hab's mal damit versucht:

Code: PHP
if(preg_match('^[m][a][0-9]*[z][d][a]$', $dataset['bla'])) {

Damit haut's hin. Theme erledigt. :)

Danke für die regex!
Bearbeitet von grOOvekill@ am 11.12.2007, 21:59

Luzandro

OC Addicted
Avatar
Registered: Mar 2006
Location: 2482
Posts: 708
Zitat von murcielago
die regex sollte sein:

Code: PHP
^[m][a][0-9]*[z][d][a]$

Gibts hier irgendeinen Grund für die eckigen Klammern? Die sollten ja nur für "ein Zeichen daraus" stehen, macht also bei einem einzelnen Zeichen nicht viel Sinn

Code: PHP
'/^ma\\d{2,3}zda$/'

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
jo, heute is scho spät, außerdem hab ich da glaub ich keine php gültige syntax angegeben. mach das nur unter c++...

gue

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
Zitat von grOOvekill@
Nun möchte ich eben diese Datensätze darauf überprüfen, ob darin dieser String enthalten ist:

ma27zda
Code:
if ($dataset['bla'] == "ma27zda") ...
? :D

Ansonsten kann und sollte man sowas eigentlich mit string funktionen á la substr lösen ;)

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
lest ihr alle seine anforderung nicht?

da kann ma27zda, ma811zda, ma3zda usw usw stehn...

also, @groove:
Code: PHP
^ma[0-9]*zda$
geht genauso
Bearbeitet von murcielago am 12.12.2007, 10:45

d3cod3

Legend
...
Avatar
Registered: Aug 2002
Location: insert location ..
Posts: 15288
* steht aber nicht für 2 oder 3? da geb ich eher dem luzandro mit {2,3} recht

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
@d3cod3

ah, seh schon. kenn mich mit der regex syntax die luzandro angeben hat, nicht so aus. aber schaut gut aus ja, bei meiner lösung können halt beliebig viele zahlen dazwischen stehen.

Lizardking

Big d00d
Avatar
Registered: Nov 2004
Location: sogined
Posts: 167
// Alternativlösung

function checkMazda($string) {
if(substr($string,0,2) == 'ma' && substr($string,strlen($string)-2,3) == 'zda') return true;
return false;
}

// Überprüft jetzt natürlich nicht, ob bzw. wieviele zeichen sich dazwischen befinden,
// war ja auch nicht gefordert (könnte aber leicht hnzugefürgt werden)

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
Zitat von Lizardking
// Alternativlösung

function checkMazda($string) {
if(substr($string,0,2) == 'ma' && substr($string,strlen($string)-2,3) == 'zda') return true;
return false;
}

// Überprüft jetzt natürlich nicht, ob bzw. wieviele zeichen sich dazwischen befinden,
// war ja auch nicht gefordert (könnte aber leicht hnzugefürgt werden)

is aber wohl schiach :D

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
aber uu schneller *gg*

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
Zitat von kleinerChemiker
aber uu schneller *gg*

DAS kann ich mir ned wirklich vorstellen.

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
substring() ist wohl schneller als preg_match()
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz