Van string naar link
Een korte vraag.
Hoe kan je in een gastenboek ervoor zorgen dat als mensen een link intypen (bijv Bla bla bla www.abc.com blablabla), dat deze tekst wordt omgezet naar een echte klikbare link. (dus zoals in dit forum)
Misschien erg eenvoudig, maar ik kom er niet uit.
Ik zit te pielen met eregi_replace, enz.
Wat is nou de makkelijkste manier om dit te maken?
edit:
Moet je dan echt de invoer eerst exploden, zodat je dan alle woorden in een array krijgt en dan alle worden controleren of het begint met http:// of www. ? Zodat je deze tekens kan vervangen met <a href.... en het wordt laat eindigen op </a>
Gewijzigd op 01/01/1970 01:00:00 door Barman V
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
function manipulateString($string){
//is er een link in de string, maak er dan een klikbare link van
if (eregi('http://', $string) || eregi('www.', $string)){
$string = explode(' ', $string);
for ($i = 0; $i < count($string); $i++){
if (substr($string[$i], 0, 7) == 'http://' || substr($string[$i], 0, 4) == 'www.'){
$http = '';
//altijd http:// in de link zetten
if (substr($string[$i], 0, 4) == 'www.')
$http = 'http://';
$string[$i] = '<a href="'.$http.$string[$i].'" target="_blank">'.$string[$i].'</a>';
}
}
$string = implode(' ', $string);
}
$string = str_replace(
array('[b]', '[/b]', '[i]', '[/i]', '[u]', '[/u]'),
array('<b>', '</b>', '<i>', '</i>', '<u>', '</u>'),
$string
);
return $string;
}
//in je gastenboekquery heb je bijv dit
$row['gb_berichtBericht'] = manipulateString($row['gb_berichtBericht']);
?>
function manipulateString($string){
//is er een link in de string, maak er dan een klikbare link van
if (eregi('http://', $string) || eregi('www.', $string)){
$string = explode(' ', $string);
for ($i = 0; $i < count($string); $i++){
if (substr($string[$i], 0, 7) == 'http://' || substr($string[$i], 0, 4) == 'www.'){
$http = '';
//altijd http:// in de link zetten
if (substr($string[$i], 0, 4) == 'www.')
$http = 'http://';
$string[$i] = '<a href="'.$http.$string[$i].'" target="_blank">'.$string[$i].'</a>';
}
}
$string = implode(' ', $string);
}
$string = str_replace(
array('[b]', '[/b]', '[i]', '[/i]', '[u]', '[/u]'),
array('<b>', '</b>', '<i>', '</i>', '<u>', '</u>'),
$string
);
return $string;
}
//in je gastenboekquery heb je bijv dit
$row['gb_berichtBericht'] = manipulateString($row['gb_berichtBericht']);
?>
Dit werkt prima, maar ik ben ervan overtuigd dat het nog makkelijker kan. Graag ideeën.
Edit
Ik heb het scriptje aangepast. Graag zou ik feedback ontvangen :)
Gewijzigd op 01/01/1970 01:00:00 door Barman V
edit: +https:
misschien een btj flauw maar toch :P
ik weet namelijk niet waarvoor het gebruikt word;)
dat was wel het enige dat ik kon verzinnen
Gewijzigd op 01/01/1970 01:00:00 door S -
Het is voor een familiegastenboek. Dus de doelgroep is LEEK. ftp zal er dan niet in voorkomen, toch zal ik het erin verwerken.
Leuk is ook dat je op deze manier de ingevoerde emailadressen klikbaar kan maken. Zo kan je ervoor zorgen dat niet die vervelende Outlook wordt opgestart (mailto), maar dat je ze doorlinkt naar jouw mailpagina. Zo kunnen ze via jouw site eenvoudig een mailtje sturen.
voor de gebruiker lijkt het me dat outlook handiger is. Maar als je het via php doet kan je makkelijker rotzooien met de email, zoals dingen toevoegen en dingen weglaten. Ip in de mail stoppen is dan ook mogelijk. Bij outlook lijkt me dat niet.
Gewijzigd op 01/01/1970 01:00:00 door Barman V
daar geef ik je gelijk in.