genion18
Goto Top

Hyperlinks generierung ohne Änderung bestehender Hyperlinks

Hallöchen,

ich habe hier ein kleines problem mal wieder. .-)

ich suche eine Möglichkeit Hyperlinks in PHP zu generieren, ohne die schon bestehenden Hyperlinks zu verändern.

$text = "This group <a href='http://test.de/group.php?id=21'>test</a> is the &ouml;ftu !$%&/()  
<a href='http://test.de/scener.php?id=37'>test1</a> and <a href='http://test.de/group.php?id=23'>test2</a> of the world  
and the <a href='http://test.de/scener.php?id=37'>test3</a> werwer <a href='http://test.de/scener.php?id=38'>test4</a>  
and http://test.de and ftp://test.de";  

ECHO $text;


hier z.b. http://test.de und ftp://test.de.

greets

Content-ID: 671625

Url: https://administrator.de/forum/hyperlinks-generierung-ohne-aenderung-bestehender-hyperlinks-671625.html

Ausgedruckt am: 26.02.2025 um 00:02 Uhr

DivideByZero
DivideByZero 25.02.2025 um 21:18:41 Uhr
Goto Top
Hmm, wie meinen? Auch dieses Mal verstehe ich nur Bahnhof. Was willst Du machen?
genion18
genion18 25.02.2025 aktualisiert um 21:23:33 Uhr
Goto Top
Hy,

ich hab einige hyperlinks im $text drin z.b. "<a href='http://test.de/scener.php?id=37'>test3</a>",
diese sollen aber nicht verändert werden wenn z.b. "http://test.de" als hyperlink generiert wird.

greets
DivideByZero
DivideByZero 25.02.2025 um 21:26:11 Uhr
Goto Top
Hmm, und wo ist jetzt das Problem?
genion18
genion18 25.02.2025 um 21:43:57 Uhr
Goto Top
hallöchen,

wenn ich ein hyperlink erstellen möchte z.b. hiermit:

//$urlsuch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";  
$urlsuch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\^\$!`\"'\|\[\]\{\}<>]*)/si";  
 
$urlreplace[]="\\1[URL]\\2\\4[/URL]";  
$urlreplace[]="[URL]\\1\\3[/URL]";  
 
$text = preg_replace($urlsuch, $urlreplace, $text);

$text = preg_replace("/\[URL\]www.(.*?)\[\/URL\]/si", "<a href=\"http://www.\\1\">www.\\1</a>", $text);  
 
$text = preg_replace("/\[URL\](.*?)\[\/URL\]/si", "<a href=\"\\1\">\\1</a>", $text);  

zerstört er meine vorherigen hyperlinks die schon gesetzt sind.

greets
DivideByZero
Lösung DivideByZero 25.02.2025 um 22:40:51 Uhr
Goto Top
Ungefähr so für http-Aufrufe:

$text = "This group <a href='http://test.de/group.php?id=21'>test</a> is the &ouml;ftu !$%&/()    
<a href='http://test.de/scener.php?id=37'>test1</a> and <a href='http://test.de/group.php?id=23'>test2</a> of the world    
and the <a href='http://test.de/scener.php?id=37'>test3</a> werwer <a href='http://test.de/scener.php?id=38'>test4</a>    
and http://test.de and ftp://test.de";    

$pattern = '/(?<!href=[\'"])(https?:\/\/[^\s<]+)/i';  
$text = preg_replace($pattern, '<a href="$1">$1</a>', $text);  

echo $text;
genion18
Lösung genion18 25.02.2025 um 23:18:02 Uhr
Goto Top
hallöchen...

danke, musste noch eine kleinigkeit hinzufügen:

$text = str_replace("https://", "http://", $text);  
$text = str_replace("http://".$domain, "https://".$domain, $text);  

jetzt klappt es wunderbar... dank dir.

greets
DivideByZero
DivideByZero 25.02.2025 um 23:19:54 Uhr
Goto Top
Schön, dann fehlt ja nur noch: Wie kann ich einen Beitrag als gelöst markieren?
DivideByZero
DivideByZero 25.02.2025 um 23:35:40 Uhr
Goto Top
Danke auch für die Veröffentlichung der Änderung (davon lebt das Forum) und weiterhin viel Erfolg.