webForumDet fria alternativet

skapa länkar från:

PHP

9 svar · 414 visningar · startad av Picklezz

Medlem sedan jan. 2002414 inlägg
Frågan#1

[rel-links]
PHP|http://www.php.net/
Apache webserver|http://httpd.apache.org/
Smarty Template Engine|http://smarty.php.net/
[/rel-links]

Jag vill kunna göra alla rader till länkar där det innan | skall vara text och det efter vara själva länken...någon som vet?

Medlem sedan jan. 2002414 inlägg
#2

och ifall det bara står en adress och ingen text med ett | efter så skall den göra det till text och adress....

hoppas någon vet hur man gör =)

Medlem sedan jan. 2000372 inlägg
#3

Tja, om du har alla dessa poster i en variabel med radbrytningar mellan varje rad skulle jag göra såhär:

# $infil är namnet på variabeln som innehåller länkarna som de blivit inlästa från fil eller databas, du får själv fixa in dem hit.
$radAr = explode("\n", $infil); # Bryt upp i rader
foreach ($radAr AS $rad) {
  $current = explode("|", $rad);
  $link = "<a href=\"" . $current[1] . "\">" . $current[0] . "</a><br>\n";
  $linkAr[] = $link
  # ELLER: echo $link;
  }

Som du ser får du ut allting formaterat som HTML-länkar i en array som heter linkAr, sen är det upp till dig vad du vill göra med den.

Medlem sedan jan. 2002414 inlägg
#4

har försökt o försökt men får det inte att funka...

alltså jag har typ en massa text i en variabel:

afsakdasdkjas
asdaskdja
[rel-links]
PHP|http://www.php.net
apache http://www.apache.org
[/rel-links]

allt är på egna rader...men jag lyckas inte sortara ut det ändå :(

Medlem sedan aug. 20002 975 inlägg
#5

Finns säkert smidigare varianter, men här är en sak att testa:

<?php

$text = "Rad före
[rel-links]
PHP|[url]http://www.php.net/[/url]
   
[url]http://httpd.apache.org/[/url]
Smarty Template Engine|[url]http://smarty.php.net/[/url]
[/rel-links]
rad efter";

// Hämta delen mellan taggarna
preg_match("/\[rel-links](.*)\[\/rel-links]/is", $text, $match);

// Om taggar hittades
if (isset($match[1])){

	$temp = $match[1];
	
	// Rensa tomrader
	$temp = preg_replace("/(\r\n|\r|\n)\s*(\r\n|\r|\n)/", "$1", $temp);

	// För rader utan text med bara url
	$temp = preg_replace("/(\r\n|\r|\n)([^\|]+)(\r\n|\r|\n)/", "$1$2|$2$3", $temp);

	// Gör om till länkar
	$temp = preg_replace("/(\r\n|\r|\n)([^\|]+)\|([^\s]+)/i", "$1<a href=\"$3\">$2</a>", $temp);

	// Lägg in i ursprungliga texten
	$text = preg_replace("/\[rel-links](.*)\[\/rel-links]/is", $temp, $text);

}

echo $text;

?>
Medlem sedan jan. 2002414 inlägg
#6

blir inte riktigt rätt...den skapar bara en länk till första raden men allt som kommer efter kommer med i samma länk...

Medlem sedan aug. 20002 975 inlägg
#7

Gör det här någon skillnad?

<?php

$text = "Rad före
[rel-links] 
PHP|[url]http://www.php.net/[/url]
[url]http://httpd.apache.org/[/url] 
Smarty Template Engine|[url]http://smarty.php.net/[/url] 
[/rel-links] 
rad efter";

// Hämta delen mellan taggarna
preg_match("/\[rel-links](.*)\[\/rel-links]/is", $text, $match);

// Om taggar hittades
if (isset($match[1])){

	$temp = $match[1];
	
	// Rensa tomrader samt tomma tecken före radslut
	$temp = preg_replace("/\s*(\r\n|\r|\n)/", "$1", $temp);

	// För rader utan text med bara url
	$temp = preg_replace("/(\r\n|\r|\n)([^|]+)(\r\n|\r|\n)/", "$1$2|$2$1", $temp);

	// Gör om till länkar
	$temp = preg_replace("/(\r\n|\r|\n)([^\|]+)\|([^\s]+)/i", "$1<a href=\"$3\">$2</a>", $temp);

	// Lägg in i ursprungliga texten
	$text = preg_replace("/\[rel-links](.*)\[\/rel-links]/is", $temp, $text);

}

echo $text;

?>
Medlem sedan jan. 2002414 inlägg
#8

nja nu funkar det med länkar utan text innan |
alltså
php.net|http://www.php.net
funkar...
men nu lägger din in texten som är innan två gånger...

btw...vet någon någon bra sida för regulgära utryck?!?!?

Medlem sedan jan. 2002414 inlägg
#9

oj...jag som gjorde fel =) nu funkar det.,..tack! men är det någon som vet nån sida så vore det bra...

MVH Gabriel Medina

Medlem sedan aug. 20002 975 inlägg
327 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
189 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
191 ms — ändringar (db)