» Forum » Clanscript » Module und Modifikationen » Link bzw.URL in Shoutbox autoumbenennen
  Mitglieder   |   Gallery   |   FAQ's   |   Regeln

[ Anmelden zum schreiben ]

Link bzw.URL in Shoutbox autoumbenennen
wor
Mitglied
0 Beitragspunkte
Posts: 21

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 02.11.2011 - 13:35:03     Zitieren
Hallo an alle,

ich hätte da eine Frage bezüglich der Shoutbox. Wir benutzen diese hier www.ilch.de/downloads-show-1234.html Natürlich angepasst und etwas modifiziert aber im großen und ganzen ist es diese hier.

Ich möchte wissen ob es möglich ist die Links/URL's die bei uns gepostet werden
1. Anklickbar zu machen und
2. Automatisch umbennen in z.B. LINK

Beispiel:
der Link der gepostet wird sieht so aus
http://www.site4free.tk/users/stopfer/$pics/lustig.jpg

Und so LINK soll es in der Shoutbox raus kommen wenn man auf senden drückt. Und wenn man dann auf den LINK klickt kommt man zu der Adresse.

Shoutbox Code:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
<?php
#   Copyright by Manuel Staechele
#   Support www.ilch.de

defined ('main') or die ( 'no direct access' );

function shoutboxsmileys($string){
   $smileys = array( ':)' => ':happy:#@#-_-_-#@#g035.gif', ':(' => ':sad:#@#-_-_-#@#0008.gif', ':-O' => ':eek:#@#-_-_-#@#0004.gif', ';)' => ':zwinker:#@#-_-_-#@#0012.gif', ':D' => ':grinsen:#@#-_-_-#@#0022.gif', ':S' => ':traurig:#@#-_-_-#@#a050.gif',  ':*' => ':traurig:#@#-_-_-#@#a0120.gif', ':\'(' => ':frown:#@#-_-_-#@#a0315.gif', ':P' => ':*g*:#@#-_-_-#@#a010.gif', ':8' => ':cool:#@#-_-_-#@#a095.gif' );
  foreach ($smileys as $icon => $info) {
    list($emo, $url) = explode('#@#-_-_-#@#', $info);
    $string = str_replace($icon,'<img src="include/images/sBsmileys/'.$url.'" border="0" alt="'.$emo.'" title="'.$emo.'" />',$string);
  }
  return $string;
}




  $shoutbox_VALUE_name2 = getenv("REMOTE_ADDR");
  $datum=date("j.n.Y");
  $zeit=date(" H:i ");
  $time=date("j-n-Y H:i");

  if ( loggedin() ) {
    $shoutbox_VALUE_name = $_SESSION['authname'];
  } else {
    $shoutbox_VALUE_name = 'Nickname';
  }
  if ( !empty($_POST['shoutbox_submit']) AND chk_antispam ('shoutbox')) {
	$shoutbox_nickname = escape($_POST['shoutbox_nickname'],'string');
    $shoutbox_nickname = substr($shoutbox_nickname, 0, 15);
	$shoutbox_textarea = escape($_POST['shoutbox_textarea'],'textarea');
	$shoutbox_textarea = preg_replace("/\[.?(url|b|i|u|img|code|quote)[^\]]*?\]/i","",$shoutbox_textarea);
	$shoutbox_textarea = strip_tags($shoutbox_textarea);
    if ( !empty($shoutbox_nickname) AND !empty($shoutbox_textarea) ) {
	    db_query('INSERT INTO `prefix_shoutbox` (`nickname`,`textarea`,`time`,`ip`) VALUES ( "'.$shoutbox_nickname.'" , "'.$shoutbox_textarea.'"  , "'.$time.'" , "'.$shoutbox_VALUE_name2.'") ' );
	  }
  }
  if (has_right($allgAr['sb_recht'])){
  echo '<form action="index.php" method="POST" name="shoutbox">';
  echo "<center><br> $datum $zeit <br>IP:<b> $shoutbox_VALUE_name2</b><br>";
  echo '<input type="text" size="15" name="shoutbox_nickname" value="'.$shoutbox_VALUE_name.'" onFocus="if (value == \''.$shoutbox_VALUE_name.'\') {value = \'\'}" onBlur="if (value == \'\') {value = \''.$shoutbox_VALUE_name.'\'}" maxlength="15">';
  
  echo '<br /><textarea style="width: 80%" cols="15" rows="2" name="shoutbox_textarea"></textarea><br />';
  echo '<hr>';
  echo '<script language="JavaScript" type="text/javascript" src="include/includes/js/bbcode.js"></script>';
  echo '<a href="javascript:put_sb(\':)\')"><img src="include/images/sBsmileys/g035.gif" border ="0"/></a>';
  echo '<a href="javascript:put_sb(\':(\')"><img src="include/images/sBsmileys/0008.gif" border ="0"/></a>';
  echo '<a href="javascript:put_sb(\':-O\')"><img src="include/images/sBsmileys/0004.gif" border ="0"/></a>';
  echo '<a href="javascript:put_sb(\';)\')"><img src="include/images/sBsmileys/0012.gif" border ="0"/></a>';
  echo '<a href="javascript:put_sb(\':D\')"><img src="include/images/sBsmileys/0022.gif" border ="0"/></a><br>';
  echo '<a href="javascript:put_sb(\':S\')"><img src="include/images/sBsmileys/a050.gif" border ="0"/></a>';
  echo '<a href="javascript:put_sb(\':P\')"><img src="include/images/sBsmileys/a010.gif" border ="0"/></a>';
  echo '<a href="javascript:put_sb(\':\\\'(\')"><img src="include/images/sBsmileys/a0315.gif" border ="0"/></a>';
  echo '<a href="javascript:put_sb(\':8\')"><img src="include/images/sBsmileys/a095.gif" border ="0"/></a>';
  echo '<a href="javascript:put_sb(\':*\')"><img src="include/images/sBsmileys/a0120.gif" border ="0"/></a><br />';
  echo '<hr>';
	echo get_antispam ('shoutbox', 0);
  echo '<input type="submit" value="'.$lang['formsub'].'" name="shoutbox_submit">';
	echo '</form>';
  }
  echo '<table width="90%" class="border" cellpadding="2" cellspacing="1" border="0">';
  $erg = db_query('SELECT * FROM `prefix_shoutbox` ORDER BY id DESC LIMIT '.(is_numeric($allgAr['sb_limit'])?$allgAr['sb_limit']:5));
	$class = 'Cnorm';
  while ($row = db_fetch_object($erg) ) {
	  $class = ( $class == 'Cmite' ? 'Cnorm' : 'Cmite' );
	  


     echo '<tr class="'.$class.'"><td align="left"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td class="shoutbox"><center>'.$row->time.'<br /><b>'.$row->nickname.':</b></center></td></tr></table>'.shoutboxsmileys(preg_replace( '/([^\s]{'.$allgAr['sb_maxwordlength'].'})(?=[^\s])/', "$1\n", $row->textarea)).'</td></tr>';

  }
  echo '</table><a class="box" href="index.php?shoutbox">'.$lang['archiv'].'</a>';

?>


Ich hoffe es ist möglich den die Links die bei uns des öfteren gepostet werden zersprengen die Box und das sieht einfach nur sch.... aus. Und wenn man es mit der Zeichenanzahl macht dann wird der Link unbrauchbar und nicht alle bemerken die Leerzeichen darin.

Danke schon mal und einen Schönen Tag noch Smilie

betroffene Homepage: vetus-clan.de
she
Mitglied
67 Beitragspunkte
Posts: 964

User Pic

2 Mitglieder finden den Beitrag gut.

Merkliste 02.11.2011 - 22:35:55     Zitieren
$row->textarea = preg_replace("#((http|https)+(\://)+(www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);


ZEILE 68


Google+shelfinger.eu
wor
Mitglied
0 Beitragspunkte
Posts: 21

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 03.11.2011 - 12:14:28     Zitieren
Klappt super vielen dank. Das einzige was ich noch ändern würde wäre das es in einem extra Fenster oder Tab aufgeht aber das müsste ich schaffen. Wenn nicht dann melde ich mich noch mal. Zwinker
Forcey
Mitglied
66 Beitragspunkte
Posts: 409

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 03.11.2011 - 12:21:55     Zitieren
$row->textarea = preg_replace("#((http|https)+(\://)+(www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1' target="_blank">LINK</a>", $row->textarea);


Achso, She, habs versucht in show_post.php einzubinden, kein erfolg^^ Hast da auch ne Idee parat?
Wär dir dankbar!

<?php
#   Copyright by: Manuel
#   Support: www.ilch.de


defined ('main') or die ( 'no direct access' );

# check ob ein fehler aufgetreten ist.
check_forum_failure($forum_failure);

# toipc als gelesen markieren
$_SESSION['forumSEE'][$fid][$tid] = time();

$title = $allgAr['title'].' :: Forum :: '.$aktTopicRow['name'].' :: Beitr&auml;ge zeigen';
$hmenu  = $extented_forum_menu.'<a class="smalfont" href="index.php?forum">Forum</a><b> &raquo; </b>'.aktForumCats($aktForumRow['kat']).'<b> &raquo; </b><a class="smalfont" href="index.php?forum-showtopics-'.$fid.'">'.$aktForumRow['name'].'</a><b> &raquo; </b>';
$hmenu .= $aktTopicRow['name'].$extented_forum_menu_sufix;
$design = new design ( $title , $hmenu, 1);
$design->header();


# Topic Hits werden eins hochgesetzt.
db_query('UPDATE `prefix_topics` SET hit = hit + 1 WHERE id = "'.$tid.'"');

# mehrere seiten fals gefordert
$limit = $allgAr['Fpanz'];  // Limit
$page = ($menu->getA(3) == 'p' ? $menu->getE(3) : 1 );
$MPL = db_make_sites ($page , "WHERE tid = ".$tid , $limit , 'index.php?forum-showposts-'.$tid , 'posts' );
$anfang = ($page - 1) * $limit;

$antworten = '';
if (($aktTopicRow['stat'] == 1 AND $forum_rights['reply'] == TRUE) OR ($_SESSION['authright'] <= '-7' OR $forum_rights['mods'] == TRUE)) {
  $antworten = '<b>[ <a href="index.php?forum-newpost-'.$tid.'">'.$lang['answer'].'</a> ]</b>';
}

$class = 'Cmite';

$tpl = new tpl ( 'forum/showpost' );
$ar = array (
  'SITELINK' => $MPL,
  'tid' => $tid,
	'ANTWORTEN' => $antworten,
	'TOPICNAME' => $aktTopicRow['name']
);
$tpl->set_ar_out($ar,0);
$i = $anfang +1;
$ges_ar = array ('wurstegal', 'maennlich', 'weiblich');
$erg = db_query("SELECT geschlecht, prefix_posts.id,txt,time,erstid,erst,sig,avatar,posts FROM `prefix_posts` LEFT JOIN prefix_user ON prefix_posts.erstid = prefix_user.id WHERE tid = ".$tid." ORDER BY time LIMIT ".$anfang.",".$limit);
while($row = db_fetch_assoc($erg)) {

	$class = ( $class == 'Cnorm' ? 'Cmite' : 'Cnorm' );

	# define some vars.
	$row['sig'] = ( empty($row['sig']) ? '' : '<br /><hr style="width: 50%;" align="left">'.bbcode($row['sig']) );
	$row['TID'] = $tid;
	$row['class'] = $class;
	$row['date'] = date ('d.m.Y - H:i:s', $row['time'] );
	$row['delete'] = '';
	$row['change'] = '';
	if (!is_numeric($row['geschlecht'])) { $row['geschlecht'] = 0; }
	if (file_exists($row['avatar'])) { $row['avatar'] = '<br /><br /><a border="0" href="index.php?user-details-'.$row['erstid'].'"><img border="0" width="120" src="'.$row['avatar'].'" alt="User Pic" border="0" /></a><br />'; }
	elseif ($allgAr['forum_default_avatar']) { $row['avatar'] = '<br /><br /><img src="include/images/avatars/'.$ges_ar[$row['geschlecht']].'.jpg" alt="User Pic" border="0" /><br />'; }
 	else { $row['avatar'] = ''; }
    $row['rang']   = userrang ($row['posts'],$row['erstid']);
	$row['txt']    = (isset($_GET['such']) ? markword(bbcode ($row['txt']),$_GET['such']) : bbcode ($row['txt']) );
	$row['i']      = $i;
    $row['page']   = $page;

	if ( $row['posts'] != 0 ) {
		$row['erst'] = '<a href="index.php?user-details-'.$row['erstid'].'"><b>'.$row['erst'].'</b></a>';
	} elseif ( $row['erstid'] != 0 ) {
        $row['rang'] = 'gel&ouml;schter User';
    }

	if ($forum_rights['mods'] == TRUE AND $i>1) {
	  $row['delete'] = '<a href="index.php?forum-delpost-'.$tid.'-'.$row['id'].'">'.$lang['delete'].'</a>';
	}
	if ( $forum_rights['reply'] == TRUE AND loggedin() ) {
	  $row['change'] = '&nbsp;<a href="index.php?forum-editpost-'.$tid.'-'.$row['id'].'">'.$lang['change'].'</a>';
	}
	$row['posts']  = ($row['posts']?'<br />Posts: '.$row['posts']:'').'<br />';
	$tpl->set_ar_out($row,1);

  $i++;
}

$tpl->set_ar_out( array ( 'SITELINK' => $MPL, 'ANTWORTEN' => $antworten ) , 2 );

if (loggedin()) {
  if ($menu->get(3) == 'topicalert') {
    if (1 == db_result(db_query("SELECT COUNT(*) FROM prefix_topic_alerts WHERE uid = ".$_SESSION['authid']." AND tid = ".$tid),0)) {
      db_query("DELETE FROM prefix_topic_alerts WHERE uid = ".$_SESSION['authid']." AND tid = ".$tid);
    } else {
      db_query("INSERT INTO prefix_topic_alerts (tid,uid) VALUES (".$tid.", ".$_SESSION['authid'].")");
    }
  }

  echo 'Optionen:';
  if (1 == db_result(db_query("SELECT COUNT(*) FROM prefix_topic_alerts WHERE uid = ".$_SESSION['authid']." AND tid = ".$tid),0)) {
    echo '<br />- <a href="index.php?forum-showposts-'.$tid.'-topicalert">'.$lang['nomailonreply'].'</a><br />';
  } else {
    echo '<br />- <a href="index.php?forum-showposts-'.$tid.'-topicalert">'.$lang['mailonreply'].'</a><br />';
  }
}

if ( $forum_rights['mods'] == TRUE ) {
  $tpl->set ( 'status', ($aktTopicRow['stat'] == 1 ? $lang['close'] : $lang['open'] ) );
	$tpl->set ( 'festnorm', ($aktTopicRow['art'] == 0 ? $lang['fixedtopic'] : $lang['normaltopic'] ) );
	$tpl->set('tid',$tid);
	$tpl->out(3);
}
$design->footer();
?>



Zuletzt modifiziert von Forcey am 03.11.2011 - 12:28:58


schupke.info >>
raging-rhinoz.eu >>
wor
Mitglied
0 Beitragspunkte
Posts: 21

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 04.11.2011 - 11:55:26     Zitieren
@ Forcey

Zitat geschrieben von Forcey

$row->textarea = preg_replace("#((http|https)+(://)+(www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})?(?:[S])*)#i","<a href='$1' target="_blank">LINK</a>", $row->textarea);





dieser Code funktioniert nicht da ist ein Fehler drin frag mich aber nicht wo ich denke es liegt an den Gänsefüßen bei target="_blank" aber wie gesagt nur eine Vermutung, und wenn du diesen Code bei deiner show_post.php eingefügt hast wirst du auch eine Fehlermeldung bekommen. Benutze den Code von She der funktioniert um den Fehler auszuschließen den dein Code hat, sollte es nicht gehen dann liegt es an was anderem Zwinker

Das ist aber nicht der Grund warum ich schreibe, ich habe was festgestellt und zwar:

man kann einen Link auf 3 Verschiedene weisen schreiben und nur eine wird mit diesem Code ersetzt:

1. http://www.diezieladresse.de <--- Wird ersetzt alles Super
2. http://diezieladresse.de <--- Passiert nichts
3. www.diezieladresse.de <--- Passiert auch nichts

Nun dachte ich kein Problem und machte das daraus:
$row->textarea = preg_replace("#((http|https)+(\://)+(www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
$row->textarea = preg_replace("#((http|https)+(\://)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
$row->textarea = preg_replace("#((www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);


Nun ja so einfach ist es doch nicht denn jetzt ersetzt er schon die Links aber das sieht dann so aus

wenn man das eingibt:
http://www.diezieladresse.de
kommt in der BOX das raus und der den ich unterstrichen habe ist anklickbar
LINK'>LINK'>LINK
und wenn man drauf klickt kommt diese Adresse:
http://www.vetus-clan.de/<a href= also ganz was anderes

Wenn man das eingibt:
http://diezieladresse.de
ist allen korrekt, der Link wird ersetzt als LINK und die Zieladresse ist auch die richtige.

Und wenn man es so eingibt:
www.diezieladresse.de

Wird der Link richtig ersetzt als LINK, aber die Zieladresse wenn man drauf klickt wird falsch erzeugt.

http://www.vetus-clan.de/www.diezieladresse.de

Ich habe keine Ahnung warum er davor www.vetus-clan.de einsetzt das hat doch keiner gesendet woher nimmt er sich diese Information ? genau das gleiche beim Beispiel Nr.1 Da stimmt gar nicht mehr.

Wäre cool wenn einer da eine Lösung hätte oder ist es so gar nicht möglich alle Arten von Links abzudecken ?
Forcey
Mitglied
66 Beitragspunkte
Posts: 409

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 04.11.2011 - 23:11:42     Zitieren
Was du brauchst ist n "if, else if" und so abfrage

Hab grad nciht die Zeit dafür, aber kannst ja selbst probieren. ist eigentlich ganz simpel im prinzip "wenn X dann Y" "wenn nicht X dann Z". da gibs viele möglichkeiten.

Uhm

$row->textarea = preg_replace("#((http|https)+(://)+(www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})?(?:[S])*)#i","<a href='$1' target=\"_blank\">LINK</a>", $row->textarea);


probier mal so.

>Neue Code Funktion NERVT.


Zuletzt modifiziert von Forcey am 04.11.2011 - 23:12:33


schupke.info >>
raging-rhinoz.eu >>
wor
Mitglied
0 Beitragspunkte
Posts: 21

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 14.11.2011 - 20:58:52     Zitieren
Sorry war etwas durch was anderes abgelenkt aber jetzt kann ich es mal weiter versuchen.

Also als erstes PHP kannich nicht ich kann nur einen fertigen Code durch viel Experementieren irgendwie meistens anpassen Lachen aber von Grund auf was zu bauen da reicht es bei mir nicht.

Was ich zu If, elseif gefunden habe ist das:

if ($a > $b) {
    echo "a is größer als b";
} elseif ($a == $b) {
    echo "a ist gleich groß wie b";
} else {
    echo "a ist kleiner als b";
}


So ISt es Gewünscht würde ich sagen aber wie es richtig in PHP schreiben das weiss ich nicht.

if ((http|https)+(://)+(www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})) {
    $row->textarea = preg_replace("#((http|https)+(\://)+(www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
} elseif ((http|https)+(://)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})) {
    $row->textarea = preg_replace("#((http|https)+(\://)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
} else ((www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})){
    $row->textarea = preg_replace("#((www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
}


So in etwa könnte ich mir das Vorstellen aber ich bin mir sicher das funktioniert so nicht !!! Zwinker
RedSunset
Mitglied
2 Beitragspunkte
Posts: 159

User Pic

1 Mitglieder finden den Beitrag gut.

Merkliste 15.11.2011 - 11:59:43     Zitieren
So funktionierts :

$row->textarea = preg_replace ("#(http|https)+(://)+(www\.)#i", "http://", $row->textarea);
	if (preg_match("#(http|https)+(://)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})#i", $row->textarea)) {
		$row->textarea = preg_replace("#((http|https)+(\://)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","[URL=$1]LINK[/URL]", $row->textarea);
	} 
	if (preg_match("#(www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})#i", $row->textarea)){
		$row->textarea = preg_replace("#((www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","[URL=$1]LINK[/URL]", $row->textarea);
	}


Achtung: Links ersetzen ^^ Bei mir läuft es über den BBCOde.
wor
Mitglied
0 Beitragspunkte
Posts: 21

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 15.11.2011 - 12:37:29     Zitieren
Perfekt !!! vielen Dank !!! Lachen

[ Anmelden zum schreiben ]