[PHP] implode txt en automatisch HREF'en

Pagina: 1
Acties:
  • 51 views sinds 30-01-2008

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 16-07 08:59

davinci

Super-Grover to the rescue

Topicstarter
Ik zoek een scriptje dat middels onderstaand voorbeeld een plaintxt file doorzoekt naar evt. links en mailadressen en deze automatisch A HREF'ed.

voorbeeld:

"ga naar www.abc123test.nl voor meer info" wordt "ga naar <a href="www.abc123test.nl">www.abc123test.nl</a> voor meer info"

en

"mail naar abc@abc123test.nl voor info" wordt "mail naar <a href="mailto:abc@abc123test.nl>abc@abc123test.nl</a> voor info"

Kan dit? bestaat dit? wie helpt me verder?

PHP:
1
2
3
4
5
6
<?
$filename="text.txt";
$tekst = file($filename);
$verwerktekst = implode("", $tekst);
print nl2br($verwerktekst);
?>

[ Voor 20% gewijzigd door davinci op 06-11-2003 18:07 ]

<removed>


  • dArtagnan
  • Registratie: Mei 2002
  • Laatst online: 15-07 20:09

dArtagnan

Een voor allen, allen voor een

zoek eens even verder in de phpmanual naar preg_replace.

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 16-07 08:59

davinci

Super-Grover to the rescue

Topicstarter
Koraalduivel schreef op 06 november 2003 @ 18:08:
zoek eens even verder in de phpmanual naar preg_replace.
PHP:
1
2
$txt = preg_replace( "/(?<!<a href=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i", "<a
 href=\"\\0\">\\0</a>", $txt );


Voor URL's zou dit inderdaad goed werken.. nu mail nog... ;)

[edit: layout f#cked up]

[ Voor 46% gewijzigd door davinci op 06-11-2003 18:16 ]

<removed>


Verwijderd

PHP:
1
$text = preg_replace ("/(([a-z]|[A-Z]|[0-9]|[_\-.])*@([a-z]|[A-Z]|[0-9]|[_\-.])*\.\w{2,3})(\W|$|\ )/", "[url=mailto:\\1]\\1[/url]\\4", $text);

Even zelf iets veranderen dat hij ipv [url=mailto:] enzo een <a href van maakt, dit gebruik ik iig op mn zelf geschreven forum.

layout :w

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 14:38
davinci schreef op 06 november 2003 @ 18:00:
Kan dit? bestaat dit? wie helpt me verder?
Ja het kan, zoals je misschien al wel gelezen heb hier boven mij. :)

Wat jij zoek zijn "Regular Expressions", op deze link staat idg alvast veel informatie. Lees die pagina en de links die worden gegeven ook goed door. Er staan ook links naar tutorials voor het geval dat je zelf aan het klussen gaat.

  • FlowinG
  • Registratie: Maart 2003
  • Laatst online: 19-08 19:58
davinci schreef op 06 november 2003 @ 18:00:
Ik zoek een scriptje dat middels onderstaand voorbeeld een plaintxt file doorzoekt naar evt. links en mailadressen en deze automatisch A HREF'ed.

voorbeeld:

"ga naar www.abc123test.nl voor meer info" wordt "ga naar <a href="www.abc123test.nl">www.abc123test.nl</a> voor meer info"

en

"mail naar abc@abc123test.nl voor info" wordt "mail naar <a href="mailto:abc@abc123test.nl>abc@abc123test.nl</a> voor info"

Kan dit? bestaat dit? wie helpt me verder?
(..)
Dit kan en bestaat. Alleen als je er een beetje moet voor doet zal je het zo kunnen vinden denk ik:-)

  • dArtagnan
  • Registratie: Mei 2002
  • Laatst online: 15-07 20:09

dArtagnan

Een voor allen, allen voor een

Ik heb even wat geprobeert te maken. Ik ben niet zo goed met reguliere expressies dus het zal misschien niet helemaal kloppen/better kunnen, maar het werkt.

PHP:
1
2
3
4
$string = "mijn email adres is test-test_test.test30@test01.net (of zo iets)";

$tekst = preg_replace("([a-zA-Z0-9_.-]*@([a-zA-Z0-9]*).([a-zA-Z])*)", "<a href='mailto:\\0'>\\0</a>", $string);
echo $tekst;

  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 16-07 08:59

davinci

Super-Grover to the rescue

Topicstarter
Ja sorry ben ff heel lui geweest
gewoon 2x een al bestaande code 'geripped'

PHP:
1
2
$tekstbijna = preg_replace ("/(([a-z]|[A-Z]|[0-9]|[_\-.])*@([a-z]|[A-Z]|[0-9]|[_\-.])*\.\w{2,3})(\W|$|\ )/", "<a href=\"mailto:\\1\">\\1</a>\\4", $tekst);
$tekstdefinitief = preg_replace( "/(?<!<a href=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i", "<a href=\"\\0\">\\0</a>", $tekstbijna );

[ Voor 25% gewijzigd door davinci op 08-11-2003 01:30 ]

<removed>


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
waarom gebruik je vage namen?

Je kunt, als je de oude text niet meer nodig hebt, ook gewoon dit doen:

$text = eenofanderereplacefunctie("zus", "zo", $text);

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • davinci
  • Registratie: Augustus 2000
  • Laatst online: 16-07 08:59

davinci

Super-Grover to the rescue

Topicstarter
Bovenstaande werkt bijna doch niet helemaal goed. Hij werkte alleen als de link daadwerkelijk http:// er voor had staan. dus www. werkt niet..
Heb onderstaand scriptje gevonden.. dit misschien ter leering en de vermaeck.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function clickable($t) {

    // link URLs
    $t = eregi_replace( "(([[:alnum:]]+://)|www\.)([^[:space:]]*)".
        "([[:alnum:]#?/&=])", "<a href=\"\\1\\3\\4\" target=\"_blank\">".
        "\\1\\3\\4</a>", $t);

    // fix lazy URLs
    $t = eregi_replace("href=\"www","href=\"http://www",$t);

    // link mailtos
    $t = eregi_replace( "(([a-z0-9_]|\\-|\\.)+@([^[:space:]]*)".
        "([[:alnum:]-]))", "<a href=\"mailto:\\1\">\\1</a>", $t);

    // truncates long urls that can cause display problems (optional)
    $t = preg_replace("/>(([[:alnum:]]+:\/\/)|www\.)([^[:space:]]".
        "{30,40})([^[:space:]]*)([^[:space:]]{10,20})([[:alnum:]#?\/&=])".
        "</", ">\\1\\3...\\5\\6<", $t);

    return $t; }

<removed>


  • Bubbaman
  • Registratie: Juli 2003
  • Laatst online: 20-03-2022
Voor de volledigheid:
Bouw een check in voor al aanwezige <a href.....> quotes.
Anders bestaat de kans dat ook "goede" tags opnieuw worden gedaan... En dubbel werkt niet (bijv. <a href="<a href="www.abcd.xyz""> of zoiets)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Voor de volledigheid:
mja, als we dan toch volledig gaan doen (;)), had je dit echt niet kunnen vinden in de search? Dit is echt al zo vaak voorbijgekomen...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1

Dit topic is gesloten.