Jump to content
php.lv forumi

aizvietot vai noņemt simbolus


yeahz

Recommended Posts

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?

Link to comment
Share on other sites

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();

Link to comment
Share on other sites

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).

Link to comment
Share on other sites

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));
}

Link to comment
Share on other sites

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)));
}

Link to comment
Share on other sites

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 ☺ ).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...