Hier kann eine Notiz zum Merk-Eintrag hinzugefügt werden (optional)
| [ Anmelden zum schreiben ] |
| Link bzw.URL in Shoutbox autoumbenennen | |||
|---|---|---|---|
| wor Mitglied
Posts: 21 |
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
betroffene Homepage: vetus-clan.de |
||
| she Mitglied
Posts: 964 |
$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
Posts: 21 |
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.
![]() |
||
| Forcey Mitglied
Posts: 409 |
$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äge zeigen';
$hmenu = $extented_forum_menu.'<a class="smalfont" href="index.php?forum">Forum</a><b> » </b>'.aktForumCats($aktForumRow['kat']).'<b> » </b><a class="smalfont" href="index.php?forum-showtopics-'.$fid.'">'.$aktForumRow['name'].'</a><b> » </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ö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'] = ' <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
Posts: 21 |
@ 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
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
Posts: 409 |
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
Posts: 21 |
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 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 !!! ![]() |
||
| RedSunset Mitglied
Posts: 159 |
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
Posts: 21 |
Perfekt !!! vielen Dank !!!
![]() |
||
| [ Anmelden zum schreiben ] |