PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [functions_bbcodeparse.php] url ersetzen



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

Mystics
16.02.2005, 19:24
Verschoben ins Hacking-Forum.

Sanchooo187
16.02.2005, 20:37
Sorry, dass ich falschen Bereich gepostet habe.

Keiner da, der evtl. ne ahnung haben könnte?

Sanchooo187
08.03.2005, 14:39
Hat denn niemand eine Idee???

redlabour
08.03.2005, 16:46
Was hattest Du denn überhaupt vor ? Und den Link zu Deinem Board in Dein Profil einzutragen kann eigentlich nie schaden.

Sanchooo187
08.03.2005, 17:07
profil abgeändert ;)

problem:
in unserem board ist aus rechtlichen gründen verboten als linktext die url zu verwenden. da es bei mittlerweile ca. 34000 user recht schwierig ist immer alle threads zu überprüfen, wollte ich es per hack lösen.
darum habe ich die oben genannte php-file so modifiziert, dass immer wenn in einem linktext ein punkt ohne leerzeichen vorkommt es durch den text "Link" ersetzt wird.
das funktioniert auch soweit, allerdings passiert aber auch folgendes:

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.


hoffe mich klar ausgedrückt zu haben.

Sanchooo187
09.03.2005, 11:51
versteht mich niemand oder wieso bekomme ich nur sporadisch antwort.
was muss ich tun um mehr aufmerksamkeit zu erregen?

Sanchooo187
17.03.2005, 23:05
wahrscheinlich kommt keine antwort mehr.