Autor Zpráva
snazimse
Profil
Zdravím,

narazil ,jsem na takovu funkci v jquery, která je součástí xml seo přepisovače url.Nějak tomu nerozumím, vrtá mi to hlavou.
Potřeboval, bych objasnit co to dělá.Konkrétně jde o proměnné from a to.Co to je za znaky? Jaký to má smysl?

Takové divné , to je. Jestli hádám to jako má odstraňovat tyto netypické znaky a proč zrovna tyhle, pak nevím ,proč to není uděláno nějak přes regulární výrazy.
Co si o to myslíte? Fakt to nějak nechápu.

Děkuji vám!


<![CDATA[
        <script type="text/javascript">
          $(document).ready(function(){
          
          var keyword = $("input[name=keyword]");
          if(!keyword.val())
          {
            $("input[name^='product_description'],input[name^='category_description'],input[name='name'],input[name^='information_description'],input[name^='model']").keyup(function()
            {
              var SEOlink = $("input[name^='product_description'],input[name^='category_description'],input[name='name'],input[name^='information_description']").val();
              
              // var SEOlink = $(this).val();
                SEOlink = SEOlink.replace(/^\s+|\s+$/g, '');             // trim
                SEOlink = SEOlink.toLowerCase();                        // remove accents, swap, etc
              var from = "ảãạàáäâấầậẩẫẻẹẽèéëêềếệểễăắằẳẵặìíïîịơởỡợờớọõỏòóöôốộồổỗđưứừựửữùúüûủụùúũñcçčlľštžýnrrdçõã·/_,:;";
              var to   = "aaaaaaaaaaaaeeeeeeeeeeeeaaaaaaiiiiiooooooooooooooooooduuuuuuuuuuuuuuuncccllstzynrrdcoa------";
              
              for (var i=0, l=from.length ; i<l ; i++)
              {
                SEOlink = SEOlink.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
              }
              
              SEOlink = SEOlink.replace(/[^a-z0-9( -]/g, '')     // remove invalid chars
              .replace(/\(/g,"-")                                 // replace ( 
              .replace(/\s+/g, '-')                             // collapse whitespace and replace by -
              .replace(/-+/g, '-');                             // collapse dashes
              // return SEOlink;
              
              // model
              if ($("input[name^='model']").length){

                var model = $("input[name^='model']").val();
                  model = model.replace('.html'); // trim
                  model = model.toLowerCase();

                for (var i=0, l=from.length ; i<l ; i++) 
                {
                  model = model.replace('.html');
                }
                model = model.replace(/[^a-z0-9 -]/g, '')     // remove invalid chars
                .replace(/\s+/g, '-')                         // collapse whitespace and replace by -
                .replace(/-+/g, '-');                         // collapse dashes
                // return model;
              }
              // end model
              
              if (model) 
              {
                keyword.val(SEOlink+'.html');
              } else 
              {
                keyword.val(SEOlink+'.html');
              }
            });
          }
        });
          </script>
        ]]>
tiso
Profil
Čuduj sa svete, ono to používa regulárne výrazy. Slúži to na vytvorenie url-friendly stringu, neviem do ktorých jazykov tieto znaky patria, ale chýbajú tam niektoré slovenské.
snazimse
Profil
tiso:

Mě jde právě o ty znaky, proč zrovna tyhle, to potřebuji, aby mi to někdo vysvětlil.

A jestli to jde udělat, nějak elegantněji.
snazimse
Profil
Pomohl by mi někdo to objasnit?

Děkuji Vám!
aDAm
Profil
a co tahle si to zkusit sám rozklíčovat? Jednoduše to poslouhá na eventech keyup na vybraných formulářových elementech a pak to vložený string předělá na prý "seo" link

A odstraňuje to ty vypsané znaky aby výsledek byl použitelný v URL adrese.
Kcko
Profil
    if (model) 
              {
                keyword.val(SEOlink+'.html');
              } else 
              {
                keyword.val(SEOlink+'.html');
              }

Na co je taková podmínka? ;-)

Místo tohohle bazmektu bych použil spíše toto http://php.vrana.cz/vytvoreni-pratelskeho-url.php
snazimse
Profil
aDAm, Kcko:

Děkuji vám, moc za reakci.

No já jsem na to narazil a tak mi to trochu vrtalo jako jasně, že vím, že to dělá seo url,
ale ty znaky, jako nevím, většinou se to dělá přes mod_rewrite pomocí regulárních výrazů
a jako spíše mi jde o to proč, zrovna takhle a zrovna tyhle znaky.

Tady třeba, v proměnné to , se některé znaky opakujou několikrát, to nechápu proč.

var to   = "aaaaaaaaaaaaeeeeeeeeeeeeaaaaaaiiiiiooooooooooooooooooduuuuuuuuuuuuuuuncccllstzynrrdcoa------";

To mě zajímá.

Přijde mi to takové prasácké , no děkuji za názorný příklad od Jakuba Vrány!
anonymníí
Profil *
snazimse:
Nahrazuje to sadu odlišných znaků z "from", vždy kus za kus. Pokud je ve "from" 50 znaků, musí být v "to" také 50.

Napříkad sekvence ìíïîị je pět různě diakritických "íček" na vstupu, na výstupu se mají převést na i. Proto je v proměnné to sekvence iiiii. Na stejných pozicích, jako jsou v předchozí proměnné ty diakritické.
snazimse
Profil
anonymníí:

Ok, děkuji za vysvětlení, to jsem nějak přehlédl a nepochopil.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0