webForumDet fria alternativet

egen "tag" -> html

4 svar · 546 visningar · startad av jme

jmeMedlem sedan maj 20012 237 inlägg
#1

Hej.

Jag har följande kod:

	 
$pattern = array("/\[link](.*?) (.+?)\[\/link]/is");
	   
$replace = array('<a href="$1">$2</a>');  
	   
$text = preg_replace($pattern, $replace, $text);

Tanken är att:

[link]http://www.google.fi[/link] -> <a href="http://www.google.fi">http://www.google.fi</a>

och

[link]http://www.google.fi google[/link] -> <a href="http://www.google.fi">google</a>

Jag får min kod att fungera antingen eller.

Användaren kan, om han/hon vill även ge en kortare titel åt länken men det krävs inte.

voigtann1Medlem sedan juni 20019 519 inlägg
#2

Lägg till följande kod efter din befintliga kod:

$pattern = array("/\[link](.*?)\[\/link]/is");
       
$replace = array('<a href="$1">$1</a>');  
       
$text = preg_replace($pattern, $replace, $text);

Detta bör fungera med:

$pattern = array("/\[link](.*?) (.+?)\[\/link]/is","/\[link](.*?)\[\/link]/is");
$replace = array('<a href="$1">$2</a>','<a href="$1">$1</a>');  
$text = preg_replace($pattern, $replace, $text);
jmeMedlem sedan maj 20012 237 inlägg
#3

Tyvärr, ingetdera verkar fungera sisådär perfekt.

$text = "Bla bla blaargh: [link]http://www.apple.com[/link], [link]http://www.gaah.fi gaah[/link]";

$pattern = array("/\[link](.*?) (.+?)\[\/link]/is","/\[link](.*?)\[\/link]/is");
$replace = array('<a href="$1">$2</a>','<a href="$1">$1</a>');  
$text = preg_replace($pattern, $replace, $text);

echo $text; // Bla bla blaargh: [link]http://www.gaah.fi gaah
Peter SMedlem sedan dec. 20025 483 inlägg
#4

Testa

$pattern = array("/\[link](.*?)(?: (.+?))?\[\/link]/eis"); 

$replace = array("'<a href=\"$1\">' . (strlen('$2') > 0 ? '$2' : '$1') . '</a>'");

$text = preg_replace($pattern, $replace, $text);
jmeMedlem sedan maj 20012 237 inlägg
#5

Tack!

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)