seth_not@home: Regulärer Ausdruck

Beitrag lesen

gudn tach!

$res = preg_match ('/^(?!test).{4}\z/', $string, $matches);

wobei hier die von dir bereits angesprochenen alternativen besser (besser lesbar, wartbar und meist auch schneller) sind:
also a.b. string$ !== 'test';

Möglichkeit 2: Du willst jeden beliebigen String matchen, der test NICHT enthält:

$res = preg_match ('/^(?!.*test.*).*\z/', $string, $matches);

da ist einiges redundant. die aufgabenstellung der moeglichkeit 2 wird bereits von

if(preg_match('/^(?!.*test)/', $string)) $matches=$string;

erfuellt (wenn php sich hier nicht anders verhaelt als perl).

Möglichkeit 3: Du willst jeden beliebigen String matchen, der das Wort "test" NICHT enthält (es aber durchaus innerhalb von Wörtern wie "tester" oder so vorkommen kann):

$res = preg_match ('/^(?!.*\btest\b.*).*\z/', $string, $matches);

analog zu oben sollte

/^(?!.*\btest\b)/

genuegen.

[Es gibt von jedem Ausdruck auch mögliche Variationen, die unter Umständen performanter oder imperformanter sind, meine habe ich wegen der Klarheit so gewählt.]

klarheit ist natuerlich nicht fuer jeden das gleiche. ich finde die reduzierten beispiele leichter verstaendlich.

prost
seth