Avatar billede mibu Nybegynder
14. september 2007 - 20:13 Der er 17 kommentarer og
1 løsning

Db-udtræk som auto link

Hvis jeg har et udtræk fra min MySQL som indeholder en mailadr. eller en www. kan man præsenterer udtrækket som et aktivt link.

Eks. Hvis udtrækket er:

<td>mig@mail.dk</td>
eller
<td>www.mitdomain.dk</td>
Avatar billede michaeltryl Seniormester
14. september 2007 - 20:17 #1
du kan bruge denne funktion

//funktion der fager links i teksten
function url2link($txt)
    {
        $username = "[a-z0-9_\-]+";
        $password = "[a-z0-9_\-!#]+";
        $host = "[a-z0-9\-]+\.[a-z0-9\-\.]+";
        $port = "\d{1,5}";
        $path = "\/[a-z0-9\/\-_\.\(\)\%#]*";
        $querystr = "\?[a-z0-9&=\-_\.%\(\)#]+";
        $proto = "(https?|ftp):\/\/";
        $url = "$host(:$port)?($path($querystr)?)?";
        $protodomain = "/$proto(($username(:$password)?@)?$url)/i";
        $domain = "/(^| )(www\.$url)/im";
        $protomail = "/mailto:($username@$host)/i";
        $mail = "/(^| )($username@$host)/im";
        $replacements = array(
                $protodomain => "<a href=\"\\0\" target=\"_blank\">\\2</a>"
                ,$domain => "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"
                ,$protomail => "<a href=\"\\0\">\\1</a>"
                ,$mail => "\\1<a href=\"mailto:\\2\">\\2</a>"
            );
        return preg_replace( array_keys( $replacements ), array_values( $replacements ), $txt );
    }
//funktion slut   

$tekst = "mig@mail.dk eller www.mitdomain.dk";
$tekst = url2link($tekst);
echo"$tekst";
Avatar billede hmm10 Nybegynder
14. september 2007 - 20:33 #2
Jeg ville undgå at mail-adresser bliver vist "ordret" i kildekoden - Du kan evt. lave denne til fx. char-kode.
Avatar billede mibu Nybegynder
14. september 2007 - 20:34 #3
Prøver lige at fordøje :-)

jeg har to celler i min db "mail" og "www" så jeg kan alså tage din funktion og hvis jeg så har en ".$row["mail"]." så bliver det til.

//funktion -------
//funktion slut

$tekst = ".$row["mail"].";
$tekst = url2link($tekst);
echo"$tekst";

rigtigt forsået ???
Avatar billede mibu Nybegynder
14. september 2007 - 20:35 #4
Indsæt selv et "t"
Avatar billede mibu Nybegynder
14. september 2007 - 20:36 #5
hmm10>>
char-kode ???
Avatar billede mibu Nybegynder
14. september 2007 - 20:38 #6
Og det skal lige siges at resultatet kun kan ses på en password-sikret side, men---! intet er jo sikkert :-)
Avatar billede hmm10 Nybegynder
14. september 2007 - 20:51 #7
Hvis det er en lukket side er dette ligegyldigt. Net-crawlere læser kildekode - og derved hele mail-adressen - og så ved man aldrig, hvad ens dejlige mailbox modtager.
Avatar billede mibu Nybegynder
14. september 2007 - 21:02 #8
Har lige testet mit eget modspørgsmål! virker ikke :-(
Avatar billede michaeltryl Seniormester
14. september 2007 - 21:11 #9
du mangler en while som henter mail fra databsen
//funktion -------
//funktion slut
$hent = mysql_query("SELECT mail FROM tabel") or die(mysql_error());
while ( $row = mysql_fetch_array($hent))
{
$tekst = $row["mail"];
$tekst = url2link($tekst);
echo"$tekst";
}
Avatar billede mibu Nybegynder
14. september 2007 - 21:28 #10
Jo!
jeg har denne her: (incl. din funktion)
<?
//db_access
include("_include/database.php");
   

?>
<?



$whereArr = array();
if (isset($_POST['efternavn']) && trim($_POST['efternavn']) != "")
{
    $efternavn = mysql_real_escape_string($_POST['efternavn']);   
    $whereArr[] = "efternavn LIKE '%" . $efternavn . "%' ";
}

if (isset($_POST['adr']) && trim($_POST['adr']) != "")
{
    $adr = mysql_real_escape_string($_POST['adr']);   
    $whereArr[] = "adr LIKE '%" . $adr . "%' ";
}

if (isset($_POST['fornavn']) && trim($_POST['fornavn']) != "")
{
    $fornavn = mysql_real_escape_string($_POST['fornavn']);   
    $whereArr[] = "fornavn LIKE '%" . $fornavn . "%' ";
}

$where = "";
if (count($whereArr)> 0)
{
$where .= "WHERE id<>1 AND (" . implode(" or ", $whereArr) . ")";  // alternativt " and ".
// $where .= "WHERE " . implode(" or ", $whereArr);  // alternativt " and ".


}
//funktion der fager links i teksten
function url2link($txt)
    {
        $username = "[a-z0-9_\-]+";
        $password = "[a-z0-9_\-!#]+";
        $host = "[a-z0-9\-]+\.[a-z0-9\-\.]+";
        $port = "\d{1,5}";
        $path = "\/[a-z0-9\/\-_\.\(\)\%#]*";
        $querystr = "\?[a-z0-9&=\-_\.%\(\)#]+";
        $proto = "(https?|ftp):\/\/";
        $url = "$host(:$port)?($path($querystr)?)?";
        $protodomain = "/$proto(($username(:$password)?@)?$url)/i";
        $domain = "/(^| )(www\.$url)/im";
        $protomail = "/mailto:($username@$host)/i";
        $mail = "/(^| )($username@$host)/im";
        $replacements = array(
                $protodomain => "<a href=\"\\0\" target=\"_blank\">\\2</a>"
                ,$domain => "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"
                ,$protomail => "<a href=\"\\0\">\\1</a>"
                ,$mail => "\\1<a href=\"mailto:\\2\">\\2</a>"
            );
        return preg_replace( array_keys( $replacements ), array_values( $replacements ), $txt );
    }
//funktion slut   

$tekst = $row["mail"];
$tekst = url2link($tekst);
$tekst2 = $row["www"];
$tekst2 = url2link($tekst);

$sql = "SELECT * FROM medlem $where LIMIT 0, 1 ";

$query = mysql_query($sql) or die(mysql_error());

echo"$tekst";
if (mysql_num_rows($query) > 0)
{
    while ($row = mysql_fetch_assoc($query))
 
    {
      echo "<center><table width='300'>
        <tr><td><hr>".$row["fornavn"]."&nbsp;".$row["efternavn"]."</td></tr>
        <tr><td>".$row["adr"]."&nbsp;".$row["nr"]." </td></tr>
        <tr><td>".$row["post"]."&nbsp;".$row["town"]."</td></tr>
        <tr><td>Telefon&nbsp;".$row["tlf"]."&nbsp;&nbsp;&nbsp;Mobil&nbsp;".$row["mtlf"]."</td></tr>
        <tr><td>Mail:&nbsp;$tekst</td></tr>
        <tr><td>Hjemmeside:&nbsp;$tekst2<hr></td></tr></table></center>";
    }
}
else
{
    // Og så koden for at vise oplysningerne her...
    echo "
        Der er ingen medlemmer der matcher din søgning, du kan prøve,<br>at søge med kun en del af navnet. (ørge = Jørgensen)";
}

?>
Avatar billede michaeltryl Seniormester
14. september 2007 - 21:35 #11
en lille rettelse:
$tekst2 = url2link($tekst2);

virker det ikke herefter hvad får du så hvis du  kun gør sådan:
$tekst = $row["mail"];
$tekst2 = $row["www"];

En anden mulighed er at udskrive dem sådan:
<tr><td>Mail:&nbsp;<a href="mailto:$tekst">$tekst</a></td></tr>
<tr><td>Hjemmeside:&nbsp;<a href='$tekst2'>$tekst2</a><hr></td></tr></table></center>";
Avatar billede mibu Nybegynder
14. september 2007 - 21:45 #12
Ingen af dem virker, de viser intet :-|
Avatar billede michaeltryl Seniormester
14. september 2007 - 21:54 #13
flyt
$tekst = $row["mail"];
$tekst = url2link($tekst);
$tekst2 = $row["www"];
$tekst2 = url2link($tekst2);

ned sådan

{
  $tekst = $row["mail"];
$tekst = url2link($tekst);
$tekst2 = $row["www"];
$tekst2 = url2link($tekst2);

    echo "<center><table width='300'>
<tr><td><hr>".$row["fornavn"]."&nbsp;".$row["efternavn"]."</td></tr>
        <tr><td>".$row["adr"]."&nbsp;".$row["nr"]." </td></tr>
................................................................

Du forsøger lige nu at hente det ud før din
while ($row = mysql_fetch_assoc($query))
Avatar billede mibu Nybegynder
14. september 2007 - 22:16 #14
?????
Jeg må sige at mine links bliver aktive, men der er ingen tekst (eller også er linket hvidt på hvid baggrund.

???
Avatar billede mibu Nybegynder
14. september 2007 - 22:22 #15
prøvet den her - virker ikke!

<tr><td>Mail:&nbsp;<font color='#FF0000'>$tekst</font></td></tr><tr>
<td>Hjemmeside:&nbsp;<font color='#FF0000'>$tekst2</font><hr></td></tr>
Avatar billede mibu Nybegynder
14. september 2007 - 22:27 #16
Den her virker! så kan jeg se linket! Med hvid skreft, på rød baggrund :-(

<tr><td bgcolor='#FF0000'>Mail:&nbsp;$tekst</td></tr>
Avatar billede mibu Nybegynder
14. september 2007 - 22:56 #17
Okay! Jeg må undskylde! Det er mig selv der har defineret link #ffffff så vil du venligst sende et svar så du kan få dine velfortjente point. :-)
Avatar billede michaeltryl Seniormester
14. september 2007 - 23:01 #18
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester