yeahz Posted September 23, 2009 Report Share Posted September 23, 2009 Kā var atļaut tikai "labus" čarakterus linkā? Piemēram, adrese tiek veidota pēc bloga nosaukuma un nosaukums izskatās šādi: "Nopirku jaunu suni, tagad to vajadzētu vest pie vetārsta!?". Adresē tam visam vajadzētu izskatīties šādi: adrese.lv/blog/nopirku-jaunu-suni-tagad-to-vajadzetu-vest-pie-vetarsta/ Tātad redzam ka linkā paliek tikai burti, arī garumzīmes iet nost, tātad es gribu lai tiek atļauti tikai burti, nekādi citi čarakteri, kā to lai uztaisa? Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted September 23, 2009 Report Share Posted September 23, 2009 Nu, ņemot vērā, ka šādas adreses taisīšanai visticamāk izmantosi mod_rewrite, tad uzreiz taisi rewrite ruli: RewriteRule ^/blog/([-a-z]+)/?$ raksts.php?nosaukums=$1 [NC,L] Protams, arī pašā skriptā vajag ļaut tikai latīņu burtus un -, tur līdzīgi izmanto: preg_macth(); Quote Link to comment Share on other sites More sharing options...
Kaklz Posted September 23, 2009 Report Share Posted September 23, 2009 iconv() ir tāda laba lieta kā //TRANSLIT, kas āēīūņķļģ un visus pārējos specsimbolus māk pārtaisīt par atbilstošajiem latīņu alfabēta burtiem. To tad arī vari izmantot. Quote Link to comment Share on other sites More sharing options...
Web Developer Posted September 23, 2009 Report Share Posted September 23, 2009 Man liekas, ka cilvēks gribēja idejas būtību. Ideja tāda: 1. 'nopirku-jaunu-suni-tagad-to-vajadzetu-vest-pie-vetarsta' tev būs ieraksta ID, kas attieksies uz datubāze tabulu "blog" (vai kā citi tu tur atlasīsi iekš /blog/). bet es pieņemu, ka īstais ID tev būs kāds surogāt-ID un sastāvēs tikai no cipara. Šis tev būs otrs ID, paredzēts tikai URL, pirms saglabāt šo id, tu analizē nosaukumu un uzģenerē ID, tad atlasi no tabulas, vai šāds UrlID eksistē. Ja eksistē, tad pieliec galā vienkārši savu faktisko surogātID - 'nopirku-jaunu-suni-tagad-to-vajadzetu-vest-pie-vetarsta-123'. Wordpresā esmu manījis, ka tiek pielikts priekšā vienkārši datums, ar domu, ka vienā datumā nevar būt divi vienādi ieraksti. 2. URL rewrite ir tikai tehniski, lai tu pārrakstītu teiksim uz savu "index.php?controller=blog&action=index&id=nopirku-jaunu-suni-tagad-to-vajadzetu-vest-pie-vetarsta". 3. Šādi url der tikai vienkāršām sistēmām (un blogs ir viens no tiem). Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted September 23, 2009 Report Share Posted September 23, 2009 Un kādi URL der sarežģītām sistēmām? Quote Link to comment Share on other sites More sharing options...
Web Developer Posted September 23, 2009 Report Share Posted September 23, 2009 Aleksejs. Sarežģītām sistēmām nemēdz visi pieprasījumi sastādīt pieprasījumu pēc konkrēta "raksta", "sadaļas" vai "bilžu galerijas". Quote Link to comment Share on other sites More sharing options...
yeahz Posted September 23, 2009 Author Report Share Posted September 23, 2009 Nesaprotu kā izmantot preg_match(). Esmu izveidojis funkciju kura strādā, bet vai pilnvērtīgi - diez vai. function fixlink($title) { $characters = array(" ", "?", "!"); $replace = array("-", "", ""); return iconv("UTF-8", "ISO-8859-1//TRANSLIT", str_replace($characters, $replace, $title)); } Quote Link to comment Share on other sites More sharing options...
marcis Posted September 23, 2009 Report Share Posted September 23, 2009 Pieļauju domu, ka tika domāts par preg_replace("/[^a-z0-9-]/", "-", $str) Quote Link to comment Share on other sites More sharing options...
yeahz Posted September 23, 2009 Author Report Share Posted September 23, 2009 Pieļauju domu, ka tika domāts par preg_replace("/[^a-z0-9-]/", "-", $str) Bet tad jau visus lielos burtus aizvieto ar "-", kas man nemaz nav vajadzīgs, un tāpat lielie burti tur nav, jo pievienoju vēl funkciju strtolower. Quote Link to comment Share on other sites More sharing options...
yeahz Posted September 24, 2009 Author Report Share Posted September 24, 2009 Ar šādu funkciju būs labi? function fixlink($title) { $characters = array(" ", "?", "!", "~", "`", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "]", "{", "}", ":", ";", "'", '"', '\"', "|", "<", ">", ",", ".", "?", "/"); $replace = array("-", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", '', '', "", "", "", "", "", "", ""); return iconv("UTF-8", "ISO-8859-1//TRANSLIT", str_replace($characters, $replace, strtolower($title))); } Quote Link to comment Share on other sites More sharing options...
marcis Posted September 24, 2009 Report Share Posted September 24, 2009 yeahz, traki ne? Uz to, ko es uzrakstīju, neesmu rezervējis nekādas autortiesības, drošvi vari atļauties pamainīt pēc saviem ieskatiem. Tika pateikta ideja - diaktriskās zīmes aizvācam un visu pārējo pārtaisam par neko vai svītriņām, vai vienalga par ko. Katram simbolam atsevišķi rakstīt repleisu gan nebūs īstais variants, jo es varu izdomāt kādu jaunu simbolu (piemēram ☺ ). Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.