| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Hjælp til regex Fra : Mikkel Z. Herold | 
  Dato :  07-05-08 13:50 |  
  |   
            Endnu engang sidder jeg og roder med et regex, som jeg ikke kan få til 
 at virke:
 
 Jeg vil gerne have den til at lave en sti som denne 
 "/mappe/billede10.png" om til 
 "/shared/show_image.html?src=/mappe/billede.png&width=10"
 
 Til det formål har jeg lavet dette regex, som virker:
 
 ereg_replace("^([a-z_\/\._]*)([0-9]*)([a-z\.]*)$", 
 "/shared/show_image.html?src=/\\1\\3&width=\\2", $string)
 
 Så langt så godt, men nu vil jeg gerne kunne tilføje en valgfri 
 parameter, hvis og kun hvis den oprindelige sti har et "f" efter 
 billednummeret, altså hvis stien hedder f.eks. "/mappe/billede10f.png", 
 så skal der sættes en ekstra parameter på den omformede sti, så den 
 kommer til at hedde 
 "/shared/show_image.html?src=mappe/billede.png&width=10&fixed_size=yes"
 
 Og det er her, det går galt. Det er ikke noget problem at tjekke, om der 
 er et "f" - det gør jeg med ^([a-z_\/\._]*)([0-9]*)(f)?([a-z\.]*)$ - men 
 hvordan får jeg det f omformet til strengen "&fixed_size=yes" i den nye 
 streng, og vel at mærke kun, når der er et f - ellers skal der ikke 
 sættes noget ind.
 
 Det bliver altid noget rodet, når man skal forklare sine regexp's, men 
 jeg håber, det giver mening!
 
 Mvh. Mikkel
 
 
 -- 
 "At first just a rustle of canvas
 And the gentlest breath on my face"
           Sting, "The Wild Wild Sea"
  
            
             |   |   
            
        
 
            
         
           Peter Brodersen (07-05-2008) 
         
	
            | Kommentar Fra : Peter Brodersen | 
  Dato :  07-05-08 15:28 |  
  |   
            On Wed, 07 May 2008 14:50:07 +0200, "Mikkel Z. Herold"
 <mikkel@[remove_this]mzh.dk> wrote:
 
 >ereg_replace("^([a-z_\/\._]*)([0-9]*)([a-z\.]*)$", 
 >"/shared/show_image.html?src=/\\1\\3&width=\\2", $string)
 >
 >Så langt så godt, men nu vil jeg gerne kunne tilføje en valgfri 
 >parameter, hvis og kun hvis den oprindelige sti har et "f" efter 
 >billednummeret, altså hvis stien hedder f.eks. "/mappe/billede10f.png", 
 >så skal der sættes en ekstra parameter på den omformede sti, så den 
 >kommer til at hedde 
 >"/shared/show_image.html?src=mappe/billede.png&width=10&fixed_size=yes"
 >
 >Og det er her, det går galt. Det er ikke noget problem at tjekke, om der 
 >er et "f" - det gør jeg med ^([a-z_\/\._]*)([0-9]*)(f)?([a-z\.]*)$ - men 
 >hvordan får jeg det f omformet til strengen "&fixed_size=yes" i den nye 
 >streng, og vel at mærke kun, når der er et f - ellers skal der ikke 
 >sættes noget ind.
 
 Hvis du har en god del omstændigheder, du gerne vil tage højde for, kan du
 eventuelt gøre det i to led og starte med en ereg (eller preg_match) og så
 i ro og mag med et par if-strukturer danne den url, du ønsker.
 
 Og så slutte med en almindelig søg og erstat.
 
 Altså, ret din ereg_replace til  if (ereg(..))  og skab så din url ved at
 tjekke de matchede værdier.
 
 Hvis du kun vil lave ét match, kan du bruge preg_replace og /e-flaget, og
 så have en funktion til at danne url'en.
 
 -- 
 - Peter Brodersen
   Kendt fra Internet
  
            
             |   |   
            
        
 
            
         
           Mikkel Z. Herold (07-05-2008) 
         
	
            | Kommentar Fra : Mikkel Z. Herold | 
  Dato :  07-05-08 22:00 |  
  |   
            On 07-05-2008 16:28 Peter Brodersen wrote:
 > Hvis du har en god del omstændigheder, du gerne vil tage højde for, kan du
 > eventuelt gøre det i to led og starte med en ereg (eller preg_match) og så
 > i ro og mag med et par if-strukturer danne den url, du ønsker.
 
 Ja, men problemet er bare, at jeg skal have det smidt i en htaccess-fil 
 i forbindelse med noget url rewrite, så jeg kan vist ikke rigtig splitte 
 det op.
 
 Så vidt jeg har kunnet læse mig til, er der noget der hedder conditional 
 regex'er - er der nogen, der har erfaring med det?
 
 Mvh. Mikkel
 
 -- 
 "At first just a rustle of canvas
 And the gentlest breath on my face"
           Sting, "The Wild Wild Sea"
  
            
             |   |   
            
        
 
            
         
            Martin (07-05-2008) 
         
	
            | Kommentar Fra : Martin | 
  Dato :  07-05-08 22:29 |  
  |  
 
            Mikkel Z. Herold wrote:
 > On 07-05-2008 16:28 Peter Brodersen wrote:
 >> Hvis du har en god del omstændigheder, du gerne vil tage højde for, 
 >> kan du
 >> eventuelt gøre det i to led og starte med en ereg (eller preg_match) 
 >> og så
 >> i ro og mag med et par if-strukturer danne den url, du ønsker.
 > 
 > Ja, men problemet er bare, at jeg skal have det smidt i en htaccess-fil 
 > i forbindelse med noget url rewrite, så jeg kan vist ikke rigtig splitte 
 > det op.
 > 
 > Så vidt jeg har kunnet læse mig til, er der noget der hedder conditional 
 > regex'er - er der nogen, der har erfaring med det?
 Jeps - har dog ikke lige nogle eksempler liggende (ligger på en kundes 
 ftp, og den har jeg ikke lige adgang til PT)
 Anyway, så hedder det RedirectMatch - altså redirect hvis det matcher, 
 og hvis ikke så fortsætter den til næste RedirectMatch.
 Der er vist også noget med nogle flags man kan sætte i enden L mener jeg 
 det er, også kan man bruge RewriteRule .... [L]
 Men jeg ville nok hoppe over i Apache gruppen, hvis du vil have 
 yderligere hjælp til htaccess - derovre ved de en HELT masse - men 
 dokumentationen(1) er altså heller ikke så ringe endda
 1) < http://httpd.apache.org/docs/2.0/howto/htaccess.html>
            
             |   |   
            
        
 
            
         
             Martin (07-05-2008) 
         
	
            | Kommentar Fra : Martin | 
  Dato :  07-05-08 22:29 |  
  |   |   |   
            
        
 
            
         
              Mikkel Z. Herold (07-05-2008) 
         
	
            | Kommentar Fra : Mikkel Z. Herold | 
  Dato :  07-05-08 22:37 |  
  |   |   |   
            
        
 
            
         
               Mikkel Z. Herold (07-05-2008) 
         
	
            | Kommentar Fra : Mikkel Z. Herold | 
  Dato :  07-05-08 23:03 |  
  |  
 
            On 07-05-2008 23:37 Mikkel Z. Herold wrote:
 >> < http://httpd.apache.org/docs/2.0/misc/rewriteguide.html>
> 
 > Takker - det vil jeg tjekke!
 Well - nogle gange er løsningen så enkel, at man helt overser den! Man 
 kan selvfølgelig bare lave to RewriteRules i htaccess, én der matcher 
 stier med "f", og en der matcher stier uden "f" - sådan her:
 RewriteEngine on
 RewriteRule ^([a-z_\/\._]*)([0-9]*)(f)([a-z\.]*)$ 
 /shared/show_image.html?src=/$1$4&width=$2&fixed_size=yes [R]
 RewriteRule ^([a-z_\/\._]*)([0-9]*)([a-z\.]*)$ 
 /shared/show_image.html?src=/$1$3&width=$2 [R]
 Ingen grund til fancy conditionals - men de kunne nu være sjove at lære
 alligevel.
 Mikkel
 -- 
 "At first just a rustle of canvas
 And the gentlest breath on my face"
           Sting, "The Wild Wild Sea"
            
              |   |   
            
        
 
            
         
           Michael Zedeler (07-05-2008) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  07-05-08 22:41 |  
  |   
            Mikkel Z. Herold wrote:
 > Endnu engang sidder jeg og roder med et regex, som jeg ikke kan få til 
 > at virke:
 > 
 > Jeg vil gerne have den til at lave en sti som denne 
 > "/mappe/billede10.png" om til 
 > "/shared/show_image.html?src=/mappe/billede.png&width=10"
 > 
 > Til det formål har jeg lavet dette regex, som virker:
 > 
 > ereg_replace("^([a-z_\/\._]*)([0-9]*)([a-z\.]*)$", 
 > "/shared/show_image.html?src=/\\1\\3&width=\\2", $string)
 > 
 > Så langt så godt, men nu vil jeg gerne kunne tilføje en valgfri 
 > parameter, hvis og kun hvis den oprindelige sti har et "f" efter 
 > billednummeret, altså hvis stien hedder f.eks. "/mappe/billede10f.png", 
 > så skal der sættes en ekstra parameter på den omformede sti, så den 
 > kommer til at hedde 
 > "/shared/show_image.html?src=mappe/billede.png&width=10&fixed_size=yes"
 > 
 > Og det er her, det går galt. Det er ikke noget problem at tjekke, om der 
 > er et "f" - det gør jeg med ^([a-z_\/\._]*)([0-9]*)(f)?([a-z\.]*)$ - men 
 > hvordan får jeg det f omformet til strengen "&fixed_size=yes" i den nye 
 > streng, og vel at mærke kun, når der er et f - ellers skal der ikke 
 > sættes noget ind.
 
 Det kan jeg ikke lige se hvordan du kan lave. Hvis der er tale om 
 udvidede pcre-kompatible udtryk, kan man måske slippe afsted med noget, 
 men det er ikke særlig oplagt.
 
 Kan du ikke nøjes med at omskrive sådan her:
 
 billede10f.png -> billede.png&width=10¶meters=f
 
 og
 
 billede10f.png -> billede.png&width=10¶meters=
 
 Hvis det er dig der skriver scriptet der modtager værdierne og det er 
 php, burde det virke udemærket.
 
 Nu hvor du bruger mod_rewrite, har du så undersøgt om ikke bare man kan 
 få den til at lave en serie af omskrivninger? Det burde kunne lade sig 
 gøre at løse problemet på den måde.
 
 Mvh. Michael.
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |