jmeMedlem sedan maj 20012 237 inlägg 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.
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 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 Testa
$pattern = array("/\[link](.*?)(?: (.+?))?\[\/link]/eis");
$replace = array("'<a href=\"$1\">' . (strlen('$2') > 0 ? '$2' : '$1') . '</a>'");
$text = preg_replace($pattern, $replace, $text);