Avatar
Martin Štěpánek (Enormyk):17.4.2016 21:30

Ahoj,
já nejsem přes Javascript moc dobrý natož přes regulární výrazy.
Mohl by mi tu někdo prosím sestavit script, který by změnil url podle příkladu? :-)
Z http://mojeadresa.wz.cz?… udělá http://mojeadresa.wz.cz/clanky.php
Z http://mojeadresa.wz.cz?… udělá http://mojeadresa.wz.cz/clanek.php?…
atd...
(Aby vzal parametr stranka jako název souboru a zbytek jako parametry.)
Myslím to obecně ne jen tento příklad.
Předem moc děkuji za pomoc. :-)
M.

Odpovědět 17.4.2016 21:30
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Avatar
Lako
Člen
Avatar
Odpovídá na Martin Štěpánek (Enormyk)
Lako:17.4.2016 22:06

(.\/)(\?stran­ka=)(\w+)(.)

A replace:
$1$3.php$4\n

Ten replace půjde i jinak.
Nevím jak s javascriptem, ale tu to funguje fajn:
http://regexr.com/3d7v1

 
Nahoru Odpovědět 17.4.2016 22:06
Avatar
Lako
Člen
Avatar
Odpovídá na Lako
Lako:17.4.2016 22:11

Edit: Nemá to být kurzíva, ale za tečkou je hvězdička, viz odkaz.

 
Nahoru Odpovědět 17.4.2016 22:11
Avatar
Odpovídá na Lako
Martin Štěpánek (Enormyk):18.4.2016 6:54

Super dík, akorát to udělá
http://mojeadresa.wz.cz/…ek.php&id=18
Ale já právě potřebuji http://mojeadresa.wz.cz/clankek.php?… (otazník)
:-)

Nahoru Odpovědět 18.4.2016 6:54
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Avatar
Lako
Člen
Avatar
Odpovídá na Martin Štěpánek (Enormyk)
Lako:18.4.2016 21:56

Zkus tohle: (.hvezda\/)(\?stran­ka=)(\w+)&?(.hvez­da)

Jediný problém s tím je ten, že pokud tam nemáš žádné atributy, tak ti na konci zůstane otazník.

To vyřešíš tím, že to projedeš podruhé tímto:
(.+)(\?)\s

http://regexr.com/3d854

Možná to jde v jednom kroku, ale takto to snad bude stačit.

 
Nahoru Odpovědět 18.4.2016 21:56
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:19.4.2016 11:54

A co třeba použít callback?

var regex = /\?stranka=([^\&]+)(?:&(.*))?$/;

var x = [
  'http://mojeadresa.wz.cz/?stranka=clanky',
  'http://mojeadresa.wz.cz/?stranka=clankek&id=18'
];

var result;

for(var i=0;i<x.length;i++){
  result = x[i].replace(regex,function(m,page,attrs){
    return attrs ? page+'.php?'+attrs : page+'.php';
  });

  console.log(result);
}
 
Nahoru Odpovědět 19.4.2016 11:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.