Topic: Regular Expressions

Sveiki, turiu klausima apie regex naudojima URL rewritinge.

Reikia kad butu atpazinta tokia simboliu seka: AAA-BBBB.html kur AAA - bet kokie simboliai ir bet koks ju kiekis, BBBB - irgi bet kokie simboliai ir bet koks ju kiekis.

Naudojant (.*)-(.*)\.html butu kaip ir viskas gerai t.y. ivedus ABC-ABC123.html viskas veikia

BET jeigu ivedama ABC-ABC-123.html tada jau nepraeina.

Kaip padaryti kad antruosiuose skliaustuose praleistu bet koki simboli iskaitant ir minuso zenkla?

Dekui

Re: Regular Expressions

Ajaks wrote:

Naudojant (.*)-(.*)\.html butu kaip ir viskas gerai t.y. ivedus ABC-ABC123.html viskas veikia

BET jeigu ivedama ABC-ABC-123.html tada jau nepraeina.

Ką reiškia "nepraeina"? Nes REGEXP'as tai teisingas, gal tavo PHP script'ai, kurie aprodoja rezultatus kažkai blogai veikia?

Re: Regular Expressions

Kitaip tariant, i .(taskas) ieina ne tik raides/skaiciai bet ir - (minuso zenklas) ?

Re: Regular Expressions

Reikia kad sitas nesvarus URL: http://www.saitas.lt/specs.php?make=BMW … el=E46-320

pasikeistu i: http://www.saitas.lt/BMW-E46-320.html

.htaccess naudojama tokia URL ReWrite taisykle:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)-(.*)\.html$ specs.php?make=$1&model=$2

Ivedus i URL: http://www.saitas.lt/BMW-E46-320.html ismeta tuscia puslapi (baltas) bet ivedus http://www.saitas.lt/AUDI-A8.html rodo duomenis is DB.

Pats php elementarus, ima duomenis is GET'o t.y. cia pat ivedus http://www.saitas.lt/specs.php?make=BMW … el=E46-320 viskas veikia normaliai, php rodo duomenis.

Re: Regular Expressions

Kaip ir sakiau - per Rewrite viskas praeina, tu aišku nesivarginai pasižūrėti kokius parametrus gauni per PHP - pamatytum, kad minusiukas (-) patenka į pirą parametrą.

Kaip spręsti:
a) .htaccess faile iš vis neskaidyti nieko per minusiukus, o perduoti viską į PHP ir ten susikarpyti kaip nori;
b) neleisti pirmame (.*) patekti minusiukui, nesu 100% ar veiks, bet reikia bandyti: "(.[^-]*)-...";
c) padaryti, kad antras parametras būtų skūpas (greedy), vėl nesu 100% ar veiks: "... -(.?*)\.html"

Re: Regular Expressions

b variantas suveike, lygtais viskas tvarkoje. As kazkaip nepagalvojau kad programa gali interpretuoti ABC-ABC kaip visuma ir kazkaip ziurejau vien tik i antraja dali su minusu.

Dekui

Beje c variantas neveikia. Galbut siuo atveju c variantas veiktu jeigu butu ivedama /BMW-E46-.html arba AUDI-A8-.html ?

Kitas klausimas, kaip patartum, ar verta uzsiimti su a variantu t.y. lysti i php? Konstrukciskai dabar viskas gana paprastai nusistato, taciau kokie gali buti minusai?

Re: Regular Expressions

Nėra jokio esminio skirtumo ar tu kažkokią eilutę išskaidyti su .htaccess (mod_rewrite) ar su PHP, tavo atveju, jeigu tarkim nesupranti, kaip veikia REGEXP'as tai daug lengviau eilutes skaidyti (karpyti) su PHP, tai čia pranašumas iš karto.

Re: Regular Expressions

Siuo atveju regexp man kaip ir aisku tai turbut pasiliksiu prie ju.

Tiesa, kaip man 'pasiziureti kokius parametrus gaunu per PHP' ?

Re: Regular Expressions

print_r($_SERVER)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: Regular Expressions

Ajaks wrote:

Siuo atveju regexp man kaip ir aisku tai turbut pasiliksiu prie ju.

Tai va kar nelabai buvo aišku (-;

Ajaks wrote:

Tiesa, kaip man 'pasiziureti kokius parametrus gaunu per PHP' ?

Visaip galima, tavo atveju:

print_r($_REQUEST);

Aišku, šito svetainės lankytojams nereikia rodyt, čia tik ant dev serverio.

Re: Regular Expressions

Na visko zinoti neimanoma, ypac besimokant, bet kuo toliau tuo aiskiau (:

Dekui uz pagalba

Re: Regular Expressions

Ajaks wrote:

Na visko zinoti neimanoma, ypac besimokant, bet kuo toliau tuo aiskiau (:

Besimokant... tai kuo giliau į mišką tuo daugiau medžių (-;

Re: Regular Expressions

Nu kazkaip pradzioje, kai nieko nezinai, tai absoliuti tamsa. Poto kai pradedi vis daugiau suzinoti tai kazkaip ir lengveja, gali ir ta ir ta padaryti.... :)