Sanchooo187
16.02.2005, 10:54
Hallo,
habe gestern die funktion handle_bbcode_url in der functions_bbcodeparse.php an folgender stelle ein bissel modifiziert.
function handle_bbcode_url($text, $link, $type = 'url')
{
global $wysiwygparse;
if (trim($text) == '')
{
return '';
}
$rightlink = trim($link);
if (empty($rightlink))
{
// no option -- use param
$rightlink = trim($text);
}
$rightlink = strip_smilies(str_replace('\\"', '"', $rightlink));
$rightlink = str_replace('"', '"', $rightlink);
###################################
$meinlink = $rightlink;
###################################
if($type == 'url' AND !preg_match('#^[a-z0-9]+://#si', $rightlink))
{
$rightlink = "http://$rightlink";
}
if (!trim($link) OR $text == $rightlink)
{
$tmp = unhtmlspecialchars($rightlink);
if (strlen($tmp) > 55 AND !$wysiwygparse)
{
$text = htmlspecialchars_uni(substr($tmp, 0, 35) . '...' . substr($tmp, -15));
}
}
// remove double spaces -- fixes issues with wordwrap
$rightlink = str_replace(' ', '', $rightlink);
// strip extra quotes from hyperlink
$text = str_replace('\"', '"', $text);
########################################
if ($type == 'url')
{
// standard URL hyperlink
if ($text == $meinlink OR preg_match('#\.\S#si', $text))
{
return "<a href=\"$rightlink\" target=\"_blank\">EIN LINK</a>";
}
else
{
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";
}
}
########################################
jetzt tritt folgendes problem auf.
immer wenn ich ein bild mit einem link einfüge, wird dieses auch durch "EIN LINK" ersetzt. dieses möchte ich aber verhindern.
d.h. die modifizierung darf nur bei [ URL ] zutreffen.
habe schon folgendes in der funktion function handle_bbcode_img versucht:
dieses durch
$bbcode = preg_replace('#\[img\]\s*(https?://([^<>*"]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', "handle_bbcode_url('\\1', '', 'url')", $bbcode);
das ersetzt
$bbcode = preg_replace('#\[img\]\s*(https?://([^<>*"]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', "handle_bbcode_url('\\1', 'bild', 'url')", $bbcode);
und in der funktion handle_bbcode_url noch eine abfrage hinzugefügt:
if ($type == 'url')
{
// standard URL hyperlink
########################################
if ($link == 'bild')
{
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";
}
########################################
elseif ($text == $meinlink OR preg_match('#\.\S#si', $text))
{
return "<a href=\"$rightlink\" target=\"_blank\">offener Link</a>";
}
else
{
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";
}
}
aber das funktioniert nicht richtig.
entweder habe ich es nicht richtig verstanden oder ich stehe auf dem schlauch.
würde mich über jede hilfe freuen. danke.
sanchooo187
habe gestern die funktion handle_bbcode_url in der functions_bbcodeparse.php an folgender stelle ein bissel modifiziert.
function handle_bbcode_url($text, $link, $type = 'url')
{
global $wysiwygparse;
if (trim($text) == '')
{
return '';
}
$rightlink = trim($link);
if (empty($rightlink))
{
// no option -- use param
$rightlink = trim($text);
}
$rightlink = strip_smilies(str_replace('\\"', '"', $rightlink));
$rightlink = str_replace('"', '"', $rightlink);
###################################
$meinlink = $rightlink;
###################################
if($type == 'url' AND !preg_match('#^[a-z0-9]+://#si', $rightlink))
{
$rightlink = "http://$rightlink";
}
if (!trim($link) OR $text == $rightlink)
{
$tmp = unhtmlspecialchars($rightlink);
if (strlen($tmp) > 55 AND !$wysiwygparse)
{
$text = htmlspecialchars_uni(substr($tmp, 0, 35) . '...' . substr($tmp, -15));
}
}
// remove double spaces -- fixes issues with wordwrap
$rightlink = str_replace(' ', '', $rightlink);
// strip extra quotes from hyperlink
$text = str_replace('\"', '"', $text);
########################################
if ($type == 'url')
{
// standard URL hyperlink
if ($text == $meinlink OR preg_match('#\.\S#si', $text))
{
return "<a href=\"$rightlink\" target=\"_blank\">EIN LINK</a>";
}
else
{
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";
}
}
########################################
jetzt tritt folgendes problem auf.
immer wenn ich ein bild mit einem link einfüge, wird dieses auch durch "EIN LINK" ersetzt. dieses möchte ich aber verhindern.
d.h. die modifizierung darf nur bei [ URL ] zutreffen.
habe schon folgendes in der funktion function handle_bbcode_img versucht:
dieses durch
$bbcode = preg_replace('#\[img\]\s*(https?://([^<>*"]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', "handle_bbcode_url('\\1', '', 'url')", $bbcode);
das ersetzt
$bbcode = preg_replace('#\[img\]\s*(https?://([^<>*"]+|[a-z0-9/\\._\- !]+))\[/img\]#iUe', "handle_bbcode_url('\\1', 'bild', 'url')", $bbcode);
und in der funktion handle_bbcode_url noch eine abfrage hinzugefügt:
if ($type == 'url')
{
// standard URL hyperlink
########################################
if ($link == 'bild')
{
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";
}
########################################
elseif ($text == $meinlink OR preg_match('#\.\S#si', $text))
{
return "<a href=\"$rightlink\" target=\"_blank\">offener Link</a>";
}
else
{
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";
}
}
aber das funktioniert nicht richtig.
entweder habe ich es nicht richtig verstanden oder ich stehe auf dem schlauch.
würde mich über jede hilfe freuen. danke.
sanchooo187