Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Miten saan autom. linkkien käsittelyn?

Sivun loppuun

jessenic [02.12.2007 16:51:23]

#

Elikkäs olisi tässä sellanen ongelma, että pitäisi saada linkit automaattisesti <a href= -muotoon.

Tässä on sellanen esimerkki koodinpätkä mihin sitä tarvii:

<?PHP
$teksti="päläpäläpää... http://jokusivu.com/jotain/joku.php päläpäläpää...";

echo $teksti;
?>

eli tuo http://jokusivu.com/jotain/joku.php pitäis saada muotoon <a href="http://jokusivu.com/jotain/joku.php">http://jokusivu.com/jotain/joku.php</a> ILMAN, että tuota $teksti -juttua tarvitsisi muokata.

TsaTsaTsaa [02.12.2007 17:05:25]

#

Tämmöinen nyt tuli äkkiseltään mieleen. Voi toki olla, että php:stä löytyy kätevämpikin tapa.

<?php
$teksti="Paras sivu ikänä on http://google.fi koska sieltä löytyy iha mitä vaa!1!!";

// Laitetaan palasiksi välilyöntien kohdalta
$osina = explode(" ", $teksti);

foreach ($osina as $osa)
{
   if ( /* jos $osa alkaa "http://" */ )
   {
      echo "<a href=$osa>$osa</a> ";
   }
   else
   {
      echo "$osa ";
   }
}
?>

jessenic [02.12.2007 17:40:57]

#

joo kiitti! Voi pistää ehdotuksia jos sattuu löytymään parempia, mutta toi on aika hyvä minun tarkoitukseen. :)

peg [02.12.2007 19:53:34]

#

No tällainen on yksi vaihtoehto, muuttaa www. linkeiksi.

$teksti = ereg_replace("(^| )(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\">\\2</a>", $teksti);

Toinen vaihtoehto, muuttaa http:// linkeiksi.

$text = ereg_replace("http://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\">\\0</a>", $text);

Tämä ei siis toimi jos osoite on https://

kayttaja-2791 [02.12.2007 20:31:29]

#

peg kirjoitti:

Toinen vaihtoehto, muuttaa http:// linkeiksi.

$text = ereg_replace("http://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\">\\0</a>", $text);

Tämä ei siis toimi jos osoite on https://

Tässä versio joka toimii myös https:llä (piti vähän puukotella kun en eregistä tiedä):

<?php
$text = "höhöhö http://www.lapa.net/";
echo $text = preg_replace("/http[s]?:\/\/([.]?[a-zA-Z0-9_\/-])*/", "<a href=\"$0\">$0</a>", $text);
?>

peg [02.12.2007 20:57:06]

#

https toimii myös näin:

$text = ereg_replace("https://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\">\\0</a>", $text);

tsuriga [02.12.2007 21:10:46]

#

Yleisen käsityksen ja nopean testailun tuloksena preg on nopeampi (ja tuosta eregin lauseesta puuttuu vaihtoehto mahdollisuus molempien tunnistukseen samalla lauseella).

jessenic [04.12.2007 15:52:27]

#

joo-o noi on vähän parempia mitä minun tekemät! pitää käyttää noita

lahtis [07.12.2007 00:02:53]

#

Toimii vielä paremmin näin

<?PHP
$text = "höhöhö https://www.lapa.net/ höhoo http://www.lapa.net/ höhöö www.lapa.net/";

echo $text = preg_replace("/((http(s?):\/\/)|(www\.))(([\w\-\.]+)(\/[^[:space:]]+)*)/i", "<a href=\"http$3://$4$5\" target=\"_blank\">$2$4$5</a>", $text);
?>

Cornix [07.12.2007 22:15:09]

#

näin vähän offtopiccina: hyi. target="_blank" ei oo kiva :(


Sivun alkuun

Vastaus

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

Tietoa sivustosta