Regulární výrazy – překlad adres

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kokoumes
Člen | 39
+
0
-

Zdravím chtěl jsem se zeptat. Potřebuju udělat překlad adres z výpisu z databáze.
Např. z <a href="article=217">text</a> na <a href="kategorie/produkt">text</a>

chtěl jsem na to použít
<?php
public static function _($value,$base=null){

return preg_replace(‚~\<a\shref=([„\‘])([^“\‚])[„\‘]>(.)<\/a>~‚, '<a href=“‘.self::getAdress(‚\\2‘,$base).‚">\\3</a>‘, $value);

}
public static function getAdress($adr,$base){
$param = explode(„=“, $adr);

if($param[0]== „article“ && isset($param[1])){
//sestavení adresy z db
$url;
}
return $base.„/“.$url;
} ?>
Potíž je v tom, že v $adr je jako string \2, ale pokud hodím $adr rovnou do return tak je tam správně article=217
Nevíte co s tím, kde dělám chybu?
Předem díky

awsickness
Člen | 98
+
0
-

za prve nevim jake je spojeni s nette.
takze pokud to opravdu delas na nette procti si routovani pripadne jak se delaji custom routery.

kokoumes
Člen | 39
+
0
-

Routy už mam nastavené. Jde mi o to jak to přechroustat přes šablonu->presenter->model
V šabloně tam kde mam výpis dat z db(článek)tam volám tu fci na překlad adres… neni teda možný že šablona mi to ještě nějak upravuje a nebo mam chybu v tom regulárnim výrazu?

Tomáš Votruba
Moderator | 1114
+
0
-

@kokoumes: Přes preg_replace se toto neřeší.

Doporučuji video – Jan Smitka – Routování (podklady), zhruba v 2. polovině je návod na vlastní routy.

Editoval Schmutzka (26. 3. 2012 18:28)

kokoumes
Člen | 39
+
0
-

Video dobrý díky, ale nevím jestli když budu mít uložený článek v DB s odkazem article=24 tak při zobrazení stránky mi šablona sama upraví zdroj podle routy na např.psi/volne-lozeny/ihned kde ihned je přímo ten článek article=24 a ostatní části adresy před si udělám podle kategorií z DB.. O to mi hlavně jde. Tohle by přes ty routy šlo?

Tomáš Votruba
Moderator | 1114
+
0
-

kokoumes napsal(a):

Video dobrý díky, ale nevím jestli když budu mít uložený článek v DB s odkazem article=24 tak při zobrazení stránky mi šablona sama upraví zdroj podle routy na např.psi/volne-lozeny/ihned kde ihned je přímo ten článek article=24 a ostatní části adresy před si udělám podle kategorií z DB.. O to mi hlavně jde. Tohle by přes ty routy šlo?

Jestli to dobře chápu, chceš mít odkaz:

<a n:href="Article:default id => 24">Článek</a>

který povede na url web.cz/psi/volne-lozeny/ihned. Přes vlastní router to jistě půjde, vrátíš kromě názvu stránky (ihned) i jeho kategori/e. Nejdřív bych zkusil zprovoznit převod id na název článku, přidat kategorii před už pak nebude problém.

kokoumes
Člen | 39
+
0
-

To hlavní co potřebuju je, abych mohl ukládat text s odkazem na článek do databáze ve tvaru <a href="article=217">odkaz na článek</a> například pomocí tinyMce Prostě v DB musí být uložený v textu odkaz s id článku, ale potom co si vypíšu text do prohlížeče musí být ve zdroji hezká url např <a href="web.cz/psi/volne-lozeny/ihned místo article=217">odkaz na článek</a> Asi to popisuju nějak divně :-)

ricco24
Člen | 141
+
0
-

Podľa toho čo tu popisuješ si potrebuješ napísať vlastnú databázovú routu ktorá bude robiť nasledovné –

Naštuduj si tieto vlákna

Editoval ricco24 (27. 3. 2012 0:14)

kokoumes
Člen | 39
+
0
-

Jj to je přesně ono, ale proč by to nemohlo být tím způsobem přes preg_replace jakým jsem popisoval? Tohle už mi přijde dost složitý(možná proto že routy mi moc neříkají :-( )