URL herkenning afkappen!
Ik heb een preg_replace die en [/ url] vervangt door een URL adres. Alleen als je iets yahoo achtigs hebt of iets phphulp.nl/voorbeeld/simpelgastenboek/gastenboek.php iets, dan is dit een heel erg langggg url adres.. Dit wil ik gaan afkappen door:
<?
function geturl($url)
{
if (strlen($url) > 50)
$short = substr($url, 0, 23) . "...." . substr($url, -23);
else
$short = $url;
return "<a href=\"" . $url . "\">" . $short . "</a>";
}
function parsetekst($text)
{
$text = eregi_replace("\\[url\\]www.([^\\[]*)\\[/url\\]", geturl('\\1'), $text);
}
$msg = "Hallo [ url]http://www.erglangurladresdieikwilafkappennamaximaal50karakterswantditsuckt/[/ url]";
$msg = parsetekst($msg);
?>
Nu het probleem:
strlen($url) geeft telkens maar: 3 aan. Ik denk dat dit komt door: \\1 die hij zo letterlijk pak, maar hij returned $url wel goed na de functie.. Dus als ik het parse dan toont hij het goed, maar als ik het in de functie geturl() parse zegt hij 3! Ik weet dus bijna zeker dat het komt omdat hij \\1 pakt ipv wat \\1 echt is, in dit geval dus een lang url adres..
de code bovenstaand heb ik trouwens net zelf ff snel getypt dus kan foutje in zitten, mara het gaat om het idee :)
geturl('\\1') , hieruit maak ik op dat hij de URL \\1 om moet zetten naar een kort adres als hij langer is dat 50 tekens...
je moet dus je code aanpassen dat hij het URL omzet, en niet \\1...
Waarom niet gewo0n een description ???
Quote:
Robbert:
je moet dus je code aanpassen dat hij het URL omzet, en niet \\1...
je moet dus je code aanpassen dat hij het URL omzet, en niet \\1...
dat is dus mijn probleem
Quote:
Mitch:
Waarom niet gewo0n een description ??? [/quote]
dat komt er ook, alleen wanneer dat niet gebruikt wordt wil ik de url dus afkappen zodat het niet een oneindig lange url wordt..
Waarom niet gewo0n een description ??? [/quote]
dat komt er ook, alleen wanneer dat niet gebruikt wordt wil ik de url dus afkappen zodat het niet een oneindig lange url wordt..
Je moet de functie eigenlijk in de string krijgen om \\1 te kunnen gebruiken, alleen in de string werkt de functie niet meer ...
Ow ik ben goed :P
Zo dus:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
function cut($url)
{
if(strlen($url) > 50)
$short = substr($url, 0, 20) . "..." . substr($url, -20);
else
$short = $url;
$link = "<a href=\"" . $url . "\">" . $short . "</a>";
return $link;
}
function parsetext($txt)
{
$txt = preg_replace("/\[url\](.+)\[\/url\]/sie", "cut('\\1')", $txt);
return $txt;
}
$txt = "Hallo [ url]http://www.erglangurladresdieikwilafkappennamaximaal50karakterswantditsuckt/[/ url]";
$txt = parsetext($txt);
echo $txt;
?>
function cut($url)
{
if(strlen($url) > 50)
$short = substr($url, 0, 20) . "..." . substr($url, -20);
else
$short = $url;
$link = "<a href=\"" . $url . "\">" . $short . "</a>";
return $link;
}
function parsetext($txt)
{
$txt = preg_replace("/\[url\](.+)\[\/url\]/sie", "cut('\\1')", $txt);
return $txt;
}
$txt = "Hallo [ url]http://www.erglangurladresdieikwilafkappennamaximaal50karakterswantditsuckt/[/ url]";
$txt = parsetext($txt);
echo $txt;
?>
Voorbeeld op : http://sh4d3h.ath.cx/parse.php
Gewijzigd op 08/07/2004 13:37:00 door Mitch X
Sjiek da ik ook gebruiken op men nieuwe site
wat is daar anders aan??
Gewijzigd op 08/07/2004 14:59:00 door Mitch X
Is het je nouw gelukt? :P
het gebruik van $1 is netter -- werkt met recentere php versies.
mitch hij doet het hoor.. je was alleen klein dingetje vergeten: je had (.+) en dat moest zijn (.+?) :P
Dat ? zegt toch gewoon dat het voorgaande 0 of 1 keer mag voorkomen, als het 0 keer voorkomt hoef je niets te vervangen en heb je die url tags niet nodig.
Dus:
(hier nix)[/ url] daar heb je nix aan ...
Terwijl + aangeeft 1 of meer keer zo'n vrij teken dus:
[url ]hier vrije tekens maar minimaal 1[/ url]
Dus (.+) lijkt me beter ...
http://phphulp.nl/voorbeeld/getimage.php?image=Haveabreak_HaveaKitKat.jpg
Haalde hij de [/ url] niet weg, hij replacede de [/ url] niet met </a> .. met ? wel.. :)
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
28
29
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
28
29
<?
function cut($url)
{
if(strlen($url) > 50)
$short = substr($url, 0, 20) . "..." . substr($url, -20);
else
$short = $url;
$link = "<a href=\"" . $url . "\">" . $short . "</a>";
return $link;
}
function parsetext($txt)
{
$txt = preg_replace("/\[url\](.+)\[\/url\]/sie", "cut('\\1')", $txt);
return $txt;
}
$txt = "Hallo [url]http://www.erglangurladresdieikwilafkappennamaximaal50karakterswantditsuckt/[/url]";
$txt = parsetext($txt);
$txt2 = "Blaat : [url]http://phphulp.nl/voorbeeld/getimage.php?image=Haveabreak_HaveaKitKat.jpg[/url]";
$txt2 = parsetext($txt2);
echo $txt . "<br />";
echo $txt2;
?>
function cut($url)
{
if(strlen($url) > 50)
$short = substr($url, 0, 20) . "..." . substr($url, -20);
else
$short = $url;
$link = "<a href=\"" . $url . "\">" . $short . "</a>";
return $link;
}
function parsetext($txt)
{
$txt = preg_replace("/\[url\](.+)\[\/url\]/sie", "cut('\\1')", $txt);
return $txt;
}
$txt = "Hallo [url]http://www.erglangurladresdieikwilafkappennamaximaal50karakterswantditsuckt/[/url]";
$txt = parsetext($txt);
$txt2 = "Blaat : [url]http://phphulp.nl/voorbeeld/getimage.php?image=Haveabreak_HaveaKitKat.jpg[/url]";
$txt2 = parsetext($txt2);
echo $txt . "<br />";
echo $txt2;
?>
http://sh4d3h.ath.cx/parse.php