SweyMedlem sedan apr. 20003 971 inlägg Jag hittade dessa uttryck för att hantera länkar med reguljära uttryck.
Vad gör de och hur man gör för att de ska fungera?
$body = eregi_replace("<(mailto:)([^ >\n\t]+)>", "{phopen}a href=\"\\1\\2\"{phclose}\\2{phopen}/a{phclose}", $body);
$body = eregi_replace("<([http|news|ftp]+://[^ >\n\t]+)>", "{phopen}a href=\"\\1\"{phclose}\\1{phopen}/a{phclose}", $body);
------------------
/mvh Swey
Programmera PHP
Dom ser lite konstiga ut tycker jag, det kräver att man skriver länkarna inom < > för att det ska funka och det ska man ju inte behöva. Sen vet jag inte riktigt varför {phclose} och {phopen} behövs, vanliga < och > funkar för mig. Testa:
$body1 = eregi_replace("(mailto:)([^ >\n\t]+)", "<a href=\"\\1\\2\">\\2</a>", $body);
$body2 = eregi_replace("([http|news|ftp]+://[^ >\n\t]+)", "<a href=\"\\1\">\\1</a>", $body);
Gör om mailto:namn@server.se och http://www.server.se till länkar (inkl ftp och news).
------------------
1010011010 - The binary number of the beast
SweyMedlem sedan apr. 20003 971 inlägg Hittade det där i Phorum som är forum för PHP med PostgreSQL och mySQL. Tyckte också det var lite konstigt.
Men nu fungerar det utmärkt. Tack!
------------------
/mvh Swey
Programmera PHP
SweyMedlem sedan apr. 20003 971 inlägg Hm... problem...
Det som du postade gör att länkarna inkluderar tecknet efteråt
det blir alltså så här
<a href="url ">url </a>
eller så här
<a href="url
">url
</a>
Lösning?
------------------
/mvh Swey
Programmera PHP
Testa och lägg in \r i ^-listan:
eregi_replace("(mailto:)([^ >\n\t**\r**]+)", "<a href=\"\\1\\2\">\\2</a>", $body);
eregi_replace("([http|news|ftp]+://[^ >\n\t**\r**]+)", "<a href=\"\\1\">\\1</a>", $body1);
Det borde lösa radmatningen (gör det för mig iaf). Att mellanslaget tas med är konstigt, för den finns ju redan med i ^-listan. Kör du under Windows?
------------------
1010011010 - The binary number of the beast
SweyMedlem sedan apr. 20003 971 inlägg Linux på servern och Windows som klient. Kör iofs. hemma också.
Det verkar ha löst sig nu. Vet inte riktigt vad det första berodde på.
Tack :)
------------------
/mvh Swey
Programmera PHP
spangoMedlem sedan juni 20008 205 inlägg varför ha
([^ >\n\t\r]+)
när man kan ha
(\S+)
i stället?
------------------
-- spango
Släpp fram mig, jag är webbdesigner!
SweyMedlem sedan apr. 20003 971 inlägg Hur menar du?
------------------
/mvh Swey
Programmera PHP
SweyMedlem sedan apr. 20003 971 inlägg Förklara. Får inte \S att fungera. Vad gör den?
Tack :)
------------------
/mvh Swey
Programmera PHP
nicclasMedlem sedan feb. 20001 050 inlägg SweyMedlem sedan apr. 20003 971 inlägg aha... får labba lite...
Jag vill lägga till en kriterie. Om länken slutar med en punkt ska inte punkten ingå i länken. Men punkter ska kunna ingå i länken om den inte slutar på den. Den ska alltså sluta när den stöter på punkt och whitespace(?).
------------------
- Swey
Projekt wF PHP
[Redigerat av Swey den 13 jul 2000]
nicclasMedlem sedan feb. 20001 050 inlägg Enkelt, fult och långsamt, men det funkar :) :
<?
$body="Matti har [url="http://www.nic-sys.se/\n"]http://www.nic-sys.se/\n[/url] som startsida! Clas har tröttnat på [url="http://www.nic-sys.se."]http://www.nic-sys.se.[/url] Nicclas tycker att [url="http://www.allanyheter.com"]http://www.allanyheter.com[/url] är coolare!\n\n";
$body = eregi_replace("(mailto:)([^ >\n\t\r]+)", "<a href=\"\\1\\2\">\\2</a>", $body);
$body = eregi_replace("([http|news|ftp]+://([^ \n\r\t]+))\. ", "<a href=\"\\1\">\\1</a>. ", $body);
$body = eregi_replace("([http|news|ftp]+://([^ \n\r\t]+))", "<a href=\"\\1\">\\1</a>", $body);
echo $body;
?>
/nicclas http://www.nic-sys.se/
[Redigerat av nicclas den 15 jul 2000]
SweyMedlem sedan apr. 20003 971 inlägg Tack, skkulle man kunna få in båda de sista i ett uttryck?
Sen fungerar inte \\S för mig. Det söker efter tecknet S.
------------------
- Swey
Projekt wF PHP
[Redigerat av Swey den 15 jul 2000]
nicclasMedlem sedan feb. 20001 050 inlägg Ooops... \S verkar bara fungera i Perl-versionen av r.u.'s. Men eftersom PHP även har stöd för Perl-versionen :) så funkar
<?
$body="Matti har [url="http://www.nic-sys.se/\n"]http://www.nic-sys.se/\n[/url] som startsida! Clas har tröttnat på [url="http://www.nic-sys.se."]http://www.nic-sys.se.[/url] Nicclas tycker att [url="http://www.allanyheter.com"]http://www.allanyheter.com[/url] är coolare!\n\n";
$body=preg_replace("/([http|news|ftp]+:\/\/[\S]+)/", "<a href=\"\\1\">\\1</a>", $body);
echo $body;
?>
/nicclas
Blir det några nyheter, eller?
SweyMedlem sedan apr. 20003 971 inlägg Det fungerar man du glömde punkten ;)
------------------
- Swey
Projekt wF PHP
nicclasMedlem sedan feb. 20001 050 inlägg Jo, jag vet, det var med flit. Lösningen med .-en var ju inte så bra... Här fokuserar vi på ett problem i taget.
:)
/nicclas http://www.nic-sys.se