Jump to content
php.lv forumi

Recommended Posts

Posted

Kā pateikt, ka izteiksme

NEsākas ar kādu vārdu, bet atbilst kādam šablonam.

Nu, piemēram, izteiksme nesākas ar "<atstarpe>BLA<atstarpe>" un atbilst preg_match_all("/([a-z])+\ *\(/i", ...) ?

Posted

Nesapratu.

 

Tevis dotā izteiksme atbilst tikai šādiem stringiem "bla(", tātad viņa nevar sākties ar "<atstarpe>BLA<atstarpe>".

 

Ko tu īsti gribi izdarīt ?

Posted (edited)

Centīšos paskaidrot labāk:

 

Man šobrīd ira šāds kods:

preg_match_all("/([a-z])+\ *\(/i", $str, $matches, PREG_OFFSET_CAPTURE);

un tad ciklā ņem tos $matches un kaut ko dara...

 

Bet tagad vajaga izmainīt kodu, lai:

1) ja $str = kaut kads teksts temp function ( ----> tad iekš $matches jānonāk "function ("

2) ja $str = kaut kads teksts somef( ----> tad iekš $matches jānonāk "somef("

3) ja $str = kaut kads teksts AS function( ----> tad iekš $matches NAV jānonāk "function(", jo pirms tā ir "sliktais teksts" AS

 

Respektīvi - iekš $matches nedrīkst nonākt tie gabali, pirms kuriem ir teksts " AS "

Edited by tomaac
Posted (edited)

To ko negribi, lai nonāk iekš matches, bet pēc kā ir nepieciešams meklēt, neliec iekavās iekš patern. Bet man liekas probēma tev ir citur.

Edited by xPtv45z
Posted

Nu, tas, ko negribu, tas jau arī nav tajā izteiksmē...

Man tieši vajaga to tur ieliekt, ar piezīmi, ka tam tur nav jābūt.

 

Piemēram, ja $str = fkldddddd AS function(

tad šitādam nav jābūt "function(", bet viņš tur ir, jo atbilst regexp izteiksmei.

 

Savukārt, ja $str = fkldddddd function(

tad šitam tur ir jābūt "function(", un viņš tur arī ir.

 

Problēma ir tieši tā, ka nemāku uzrakstīt "tam tur nav jābūt".

Posted (edited)

LABOTS!

 

$p = '/((^| )(?<!AS )[a-z]+\s*)\(/i';

 

kaut kads teksts AS function ( = false
AS function ( = false
  AS function ( = false
kaut kads teksts function ( = true
  function ( = true
function ( = true

Edited by Delfins
×
×
  • Create New...