Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointiputka: URLintunnistus

Sivun loppuun

Pekka Karjalainen [18.02.2009 08:29:33]

#

Putkan URLintunnistus ei vieläkään selviä kaikesta kummasta, mitä vaikkapa Wikipediassa voi kohdata. Tämä tuli esiin erään koodivinkin kommenteissa.

Ensin on osoite, jossa sulut on merkitty koodeina. Sen pitäisi toimia... Sitten on sulkujen kanssa, ja niistä jälkimmäinen sulku jää pois URLista. Näin käy ainakin kommenttilootassa.

http://en.wikipedia.org/wiki/Closure_(computer_science)

http://en.wikipedia.org/wiki/Closure_(computer_science)

Jos tätä ei ole helppo korjata, täytyy kirjoittajan itse muistaa käyttää noita escape-koodeja. Ne saa muuten kätsästi selaimen osoiteriviltä kutsumalla javascriptin escape-funktiota.

javascript:escape("(~)::(~)")

Metabolix [18.02.2009 09:37:39]

#

Tunnistuksessa ongelmana on, millä perusteella sulun voisi helposti tunnistaa osoitteeseen kuuluvaksi. Toisinaan osoitteita kirjoitetaan sulkuihin, esimerkiksi "(ks. http://linkki/)".

Ongelman voi kiertää linkkitagilla: Wikipedia: Closure (computer science).

Pekka Karjalainen [18.02.2009 11:36:46]

#

Hyvä arvaus useimpien osoitteiden kanssa on tietenkin se, että sulun kuuluessa osoitteeseen sitä vastaava sulku on osoitteen sisällä. Kas näin.

http://en.wikipedia.org/wiki/Closure_(computer_science) <- kuuluu

(ks. http://linkki/) <- ei kuulu

Tokkopa tuo niin tärkeää on. Täällähän Putkassa moderaattori korjaa sopimattomat sisällöt viesteistä ihan kertomatta miksi :)

Lebe80 [18.02.2009 15:48:51]

#

Mielestäni tarpeeksi tarkka olisi käsitellä urli välilyöntiin/rivinvaihto asti. Itselläni ainakin tapana tunkea urlin jälkeen vähintään yksi välilyönti/rivinvaihto.

Merri [19.02.2009 13:45:24]

#

Ei noita sulkuja tarvitse huomioida. Hyvät selaimet antaa aina leikepöydälle osoitetta kopioitaessa linkin oikeassa muodossa, esim. Firefoxilla osoitepalkista tai hiiren toisella linkkiä kopioitaessa tulee juuri se passeli osoite.

Enemmän olisin sitä mieltä, että linkkien näyttäminen tehtäisiin toisin päin: jos linkki tulee tekstinä luettavana näkyviin, niin sitten käsitellään se luettavaksi, %20 muuttuu välilyönniksi jne. – helpompi toteutus kuin miettiä, miten tehdä urlin tunnistus sellaisten merkkien kanssa, jotka eivät saa validissa urlissa esiintyä.

Lebe80 [19.02.2009 14:19:56]

#

Testi, kopioitu Firefox 3:n osoitepalkista:

http://en.wikipedia.org/wiki/Closure_(computer_science)

edit:
Viimeinen sulkumerkki ei toimi.

Metabolix [19.02.2009 14:40:22]

#

Joo, eihän se selain osaa linkkiä ottaa oikein takaisinkaan, jos se lukee foorumin puolella väärin.

Tietenkin sulut voisi tunnistaa, kuten Kopeekka ehdottaa, mutta tällöin mielivaltainen linkki ei toimi säännöllisillä lausekkeilla oikein. Toisaalta sisäkkäiset sulut ovat aika harvinaisia, joten yksi sulkutaso luultavasti riittäisi jo pitkälle.

Oletan, että korvaukseen on käytetty säännöllisiä lausekkeita. Toimisiko tällainen arvausmenetelmä riittävän hyvin?

<?php
$m = "-_.%?=&+#a-zA-Z0-9"; # yms. sallitut merkit
$linkki_preg = "![a-z]+://([$m]*([(][$m]*[)]?)?/?)+!";
$linkki_preg_replace = '<a href="\\0">\\0</a>';

$viesti = preg_replace($linkki_preg, $linkki_preg_replace, $viesti);
?>

Tuskinpa ihmisiä saa kuitenkaan opetettua käyttämään URL-enkoodattuja osoitteita, kun monet selaimetkaan eivät nykyään niitä näytä.

Merri [21.02.2009 14:01:06]

#

Hmm, outoa, jos Firefoxissa (Windows) kopioin osoitepalkista esimerkiksi ääkkösiä sisältävän osoitteen, niin sieltä tulee esimerkiksi %C3%84 sen sijaan että tulisi Ä. Toiset selaimet antaa Ä:n. Firefox kuitenkin jättää sulut käsittelemättä, joten nyt pitäisi sitten kait tarkistaa, ovatko sulut sallittuja URLissa vaiko eivät, ja jos ovat, niin missä kohtaa. Ja jos eivät, niin sitten pitää varmaankin heittää bugiraporttia, tai käydä kurkkimassa Bugzillaa.

En taida jaksaa vaivautua.

Grez [21.02.2009 14:48:08]

#

Tuskin tuossa on mitään kummallista tai bugia FF:n puolesta, ( ja ) merkkejä vaan ei tarvitse minkään syyn takia enkoodata URLeissa.

Antti Laaksonen [21.02.2009 19:26:37]

#

Nyt Metabolixin ehdotus on hieman muokattuna koekäytössä.

Jos huomaatte linkeissä ongelmia, ilmoittakaa tähän keskusteluun!

jmp [25.02.2009 15:05:56]

#

Kun yritän kirjoittaa linkkitagien sisään sanan, joka alkaa $-merkillä (esim. ö$testiö), linkintunnistaja poistaa sen.

Esimerkki:

[linkki "http://ohjelmointiputka.net"]Tämä on $testi.[/linkki]

Esimerkki toiminnassa:

Tämä on $testi.

Onko tämän tarkoitus toimia näin?

Antti Laaksonen [25.02.2009 15:38:57]

#

Nyt linkintunnistaja ei enää poista $-merkillä alkavia sanoja.

Itse asiassa se ei ennenkään poistanut vaan teki jotain muuta, mutta kuka arvaa, mitä?

Metabolix [25.02.2009 15:51:43]

#

Antti Laaksonen kirjoitti:

Itse asiassa se ei ennenkään poistanut vaan teki jotain muuta, mutta kuka arvaa, mitä?

Taisipa korvata sen muuttujan sisällöllä, kuten PHP:ssä on tapana tehdä. Johan tämä Putka tunnetaan. ;)

Linkkitagin ja osoitteiden yhteiskäyttö on toki arveluttavaa, mutta näinköhän nykyinen toimintatapa on järkevä?

[linkki "http://linkki/"]http://teksti/[/linkki]

Esitänpä toisenkin, asiaan liittymättömän toiveen: voisiko hakasulkeille saada oman tagin, vaikkapa [h]-[/h]? [[#91]] ja [[#93]] ovat hankalia kirjoittaa, ja tässäkin viestissä vastaavia merkintöjä on jo yhteensä 18.

eq [25.02.2009 17:52:36]

#

Metabolix kirjoitti:

Esitänpä toisenkin, asiaan liittymättömän toiveen: voisiko hakasulkeille saada oman tagin, vaikkapa [h]-[/h]? [[#91]] ja [[#93]] ovat hankalia kirjoittaa, ja tässäkin viestissä vastaavia merkintöjä on jo yhteensä 18.

Ehkäpä [koodi]-tagin kaltaisen muotoilemattomuuden mahdollistaminen ilman laatikkoa ja sisennyksiä (ts. muun tekstin joukkoon)?

(Ei välttämättä aina yhtä kätevä ominaisuus, mutta mahdollisesti monikäyttöisempi. Tiedä sitten jos tällainen olisi jotain käytäntöä vastaan)

Metabolix [02.03.2009 12:45:56]

#

Nähtävästi &-merkkiä ei muuteta muotoon &amp; kuin satunnaisissa tapauksissa, ja esimerkiksi teksti "&times" näkyy muodossa "&times". Myös linkit kärsivät tästä ongelmasta, eli tämä vie aivan väärään osoitteeseen. Asia tuli ilmi toisessa keskustelussa.

Grez [02.03.2009 12:59:40]

#

Ihmettelen kyllä miksi selain edes näyttää tuon ilman puolipistettä lopussa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta