Avatar billede kennith Nybegynder
08. september 2010 - 13:55 Der er 12 kommentarer og
2 løsninger

Omskrivning af ereg til preg_match

Hej jeg er løbet ind i et problem da ereg er deprecated får jeg nogle fejl på min side. Jeg har prøvet mig lidt frem men uden held jeg skal have omskrevet følgende:

  if (!ereg('^' . DIR_FS_CATALOG_IMAGES . DIR_FS_PRODUCTS_IMAGES, $current_path)) $current_path = DIR_FS_CATALOG_IMAGES . DIR_FS_PRODUCTS_IMAGES;

Håber der er en der kan hjælpe hurtigt!
Avatar billede michael_stim Ekspert
08. september 2010 - 13:58 #1
Har du kigget på www.php.net/preg_match
Avatar billede kennith Nybegynder
08. september 2010 - 13:59 #2
Det har jeg nu og det er sort snak for mig
Avatar billede michael_stim Ekspert
08. september 2010 - 14:01 #3
Start og slut med / og skift ereg ud med preg_match.
Avatar billede kennith Nybegynder
08. september 2010 - 14:08 #4
her prøvet med  if (!preg_match('/^/' . DIR_FS_CATALOG_IMAGES . DIR_FS_PRODUCTS_IMAGES, $current_path)) $current_path = DIR_FS_CATALOG_IMAGES . DIR_FS_PRODUCTS_IMAGES;

det virker ikke så kommer den med følgende fejl:

Warning: preg_match() [function.preg-match]: Unknown modifier '/'
Avatar billede majbom Novice
08. september 2010 - 16:11 #5
...ch('/^/' . DIR_FS_C...

punktummet skal være et komma...
Avatar billede kennith Nybegynder
08. september 2010 - 17:34 #6
Hvis jeg erstatter punktummet med et komma så går det virkelig galt med scriptet og hvis jeg lader det være et punktum så får jeg ovenstående fejl
Avatar billede majbom Novice
08. september 2010 - 18:43 #7
hvad er det præcis du skal finde ud af om strengen indeholder?
^ betyder at strengen starter med det der kommer efter tegnet, men du afslutter dit regexmønster umiddelbart efter - det giver ikke rigtig mening...
Avatar billede xicrow Nybegynder
08. september 2010 - 20:54 #8
Prøv med dette i stedet:

if (!preg_match('/^'.DIR_FS_CATALOG_IMAGES.DIR_FS_PRODUCTS_IMAGES.'/', $current_path))
$current_path = DIR_FS_CATALOG_IMAGES.DIR_FS_PRODUCTS_IMAGES;


/xicrow
Avatar billede acore Ekspert
08. september 2010 - 21:06 #9
Hvis DIR_FS_CATALOG_IMAGES eller nogle af de andre konstanter indeholder "/", så duer det ikke at omslutte med /. Brug i stedet # eller et hvilket som helst andet tegn, som IKKE findes i din tekst i forvejen.
Avatar billede xicrow Nybegynder
08. september 2010 - 21:35 #10
Omskriver lige min tidligere kommentar, ifølge #9 som jeg selvfølgelig havde overset:

if (!preg_match('#^'.DIR_FS_CATALOG_IMAGES.DIR_FS_PRODUCTS_IMAGES.'#', $current_path))
$current_path = DIR_FS_CATALOG_IMAGES.DIR_FS_PRODUCTS_IMAGES;


Eller som jeg ville have skrevet det:

$pattern = '#^'.DIR_FS_CATALOG_IMAGES.DIR_FS_PRODUCTS_IMAGES.'#';
if (!preg_match($pattern, $current_path)){
  $current_path = DIR_FS_CATALOG_IMAGES.DIR_FS_PRODUCTS_IMAGES;
}


/xicrow
Avatar billede kennith Nybegynder
08. september 2010 - 21:44 #11
Problemet blev løst med følgende kode:

  if (!strstr($current_path, DIR_FS_CATALOG_IMAGES . DIR_FS_PRODUCTS_IMAGES)) $current_path = DIR_FS_CATALOG_IMAGES . DIR_FS_PRODUCTS_IMAGES;

Tak for jeres indsats læg nogle svar så fordeler jeg nogle point
Avatar billede xicrow Nybegynder
08. september 2010 - 22:08 #12
Og et svar får du her
Avatar billede acore Ekspert
08. september 2010 - 23:31 #13
...og her
Avatar billede majbom Novice
09. september 2010 - 07:38 #14
springer over...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester