In bestaande code, Ekomite CMS GuestBook snippet [1], probeer ik een
optie in te bouwen om tekst smilies ( :-) ) om te zetten in een image.
Dit probeer ik met str_replace:
$message = str_replace(":-)", "<img
src=\"./assets/images/smilies/a1.gif\">", $_POST['message']);
$message = str_replace(":-(", "<img
src=\"./assets/images/smilies/a2.gif\">", $_POST['message']);
$message = str_replace(";-)", "<img
src=\"./assets/images/smilies/a3.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a4.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a5.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a6.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a7.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a8.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a9.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a10.gif\">", $_POST['message']);
$message = str_replace(":confused:", "<img
src=\"./assets/images/smilies/a11.gif\">", $_POST['message']);
De ene keer wordt het plaatje weergegeven en de andere keer de tekst.
Heeft iemand de oplossing (let wel, PHP is niet mijn sterke kant...)?
De paden (./assets/images/smilies/) kloppen.
volledige code snippet:
----------
# GuestBook - Etomite v0.6.3 - Modified 2004-11-05
# Created By: Ralph A. Dahlgren - rad14701@yahoo.com
# Usage: Create an Etomite user or admin as GuestBook owner in Etomite
Manager
# Change $defaultadmin variable to match GuestBook owner
# OR: Set $defaultadmin to an existing Admin name.
# Messages will be deposited into that mailbox, but only GuestBook
# messages will be displayed within the GuestBook listing.
#
# Var's: $gbtype - Referenced in GuestBook admin User Messages Subject
# $gbadmin - Etomite User/Admin who will receive this message
#
# Examples: [[GuestBook?gbtype=GuestBook&gbadmin=guestbook]] - Self
Explanatory
# [[GuestBook?gbadmin=someuser]] - Uses
$etomite->documentObject['pagetitle'] for $gbtype
# [[GuestBook?bgtype=SomeTopic]] - Uses $defaultadmin for $gbadmin
# [[GuestBook]] - Will use snippet defaults for $gbtype and
$gbadmin
#
# Note: $etomite->documentObject['createdby'] was not used for $gbadmin
intentionally
# To implement this capability would entail and additonal DB
Query before Inserts
#
$defaultadmin = "mijn_naam"; # Default GuestBook admin to use if
$gbadmin not passed
$gap = " :: "; # Separator between $type and $subject in User Messages
Subject field
#
# Variables you should not need to change
#
$type = isset($gbtype) ? $gbtype :
$etomite->documentObject['pagetitle']; # Set $type field for new entry
$trimtype=substr($type,0,15); # Truncate $type to 15 character limit
for field
$guestbookadmin = isset($gbadmin) ? $gbadmin : $defaultadmin; # Set
GuestBook admin
$pageid=$etomite->documentIdentifier; # ID of the calling document
$dateformat = "%m/%d/%Y at %H:%M:%S"; # Preferred Date & Time display
format
$tbl = $etomite->dbConfig['dbase'].".".$etomite->dbConfig['table_prefix'];
$msgdb = $tbl."user_messages"; # DB.Prefix_user_messages variable
# Don't allow unwanted re-posts of messages
if($_POST['submitted'] == "TRUE") header( "Location:
index.php?id=$etomite->documentIdentifier" );
# Query for the user ID (id) for the GuestBook owner
$sql = "SELECT id FROM ".$tbl."manager_users WHERE
".$tbl."manager_users.username='$guestbookadmin';" ;
$rs = $etomite->dbQuery($sql);
$limit = $etomite->recordCount($rs);
# Check to make sure $guestbookadmin has been created and assigned
if($limit == 1) {
$userrec = $etomite->fetchRow($rs);
$userid = $userrec['id'];
# Check to see if a valid message has been submitted
if(isset($_POST['submit']) && ($_POST['subject'] > "") &&
($_POST['message'] > "")){
$postdate = time();
$recipient = $userid;
$subject = $type . $gap . strip_tags($_POST['subject']);
// $message = strip_tags($_POST['message']);
// $message = $_POST['message'];
$message = str_replace(":-)", "<img
src=\"./assets/images/smilies/a1.gif\">", $_POST['message']);
$message = str_replace(":-(", "<img
src=\"./assets/images/smilies/a2.gif\">", $_POST['message']);
$message = str_replace(";-)", "<img
src=\"./assets/images/smilies/a3.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a4.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a5.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a6.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a7.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a8.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a9.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a10.gif\">", $_POST['message']);
$message = str_replace(":confused:", "<img
src=\"./assets/images/smilies/a11.gif\">", $_POST['message']);
# Query to INSERT a new GuestBook message into user_messages
$sql = "INSERT INTO $msgdb ( id , type , subject , message , sender
, recipient , private , postdate , messageread ) VALUES ( '', '$type',
'$subject', '$message', '0', '$recipient', '0', '$postdate', '0' );";
$rs = $etomite->dbQuery($sql); # Execute the Query
$submitted="TRUE";
}
else $submitted = "TRUE";
$output .= "<table border=\"0\" cellspacing=\"0\"
cellpadding=\"6\" align=\"center\">";
$output .= "<tr align=\"center\" valign=\"middle\">";
$output .= "<td>:-) = <img
src=\"./assets/images/smilies/a1.gif\" border=\"0\"></a></td>";
$output .= "<td>:-( = <img
src=\"./assets/images/smilies/a2.gif\" border=\"0\"></a></td>";
$output .= "<td>;-) = <img
src=\"./assets/images/smilies/a3.gif\" border=\"0\"></a></td>";
$output .= "</tr>";
$output .= "<tr align=\"center\" valign=\"middle\">";
$output .= "<td>= <img
src=\"./assets/images/smilies/a4.gif\" border=\"0\"></a></td>";
$output .= "<td>= <img
src=\"./assets/images/smilies/a5.gif\" border=\"0\"></a></td>";
$output .= "<td>= <img
src=\"./assets/images/smilies/a6.gif\" border=\"0\"></a></td>";
$output .= " </tr>";
$output .= "<tr align=\"center\" valign=\"middle\">";
$output .= "<td>= <img
src=\"./assets/images/smilies/a7.gif\" border=\"0\"></a></td>";
$output .= "<td>= <img
src=\"./assets/images/smilies/a8.gif\" border=\"0\"></a></td>";
$output .= "<td>= <img
src=\"./assets/images/smilies/a9.gif\" border=\"0\"></a></td>";
$output .= "</tr>";
$output .= "<tr align=\"center\" valign=\"middle\">";
$output .= "<td>= <img
src=\"./assets/images/smilies/a10.gif\" border=\"0\"></a></td>";
$output .= "<td>:confused: = <img
src=\"assets/images/smilies/a11.gif\" border=\"0\"></a></td>";
$output .= "</tr>";
$output .= " <tr align=\"center\">";
$output .= "<td colspan=\"3\">";
$output .= "<div align=\"center\" class=\"font2\"><br>";
$output .= "</div>";
$output .= "</td>";
$output .= " </tr>";
$output .= "</table>";
$output .= "<div style='width:100%; text-align:center;'>";
$output .= "<form method='post' action='index.php'>";
$output .= "<input type='hidden' name='id' value='$pageid' />";
$output .= "<input type='hidden' name='submitted' value='$submitted' />";
$output .= "<div>Name and/or Email:</div><div><input name='subject'
size='40' /></div>";
$output .= "<div>Enter Message:</div><div><text"."area rows='10'
cols='50' name='message'></"."text"."area></div><br />";
$output .= "<div><input type='submit' name='submit' value='Submit' />";
$output .= " <input type='reset' name='reset' value='Reset' /></div>";
$output .= "</form></div><hr />";
# Query to SELECT existing messages for display in descending order
$sql = "SELECT * FROM ".$tbl."user_messages
WHERE ".$tbl."user_messages.recipient=$userid
AND ".$tbl."user_messages.type='".$trimtype."'
ORDER BY ".$tbl."user_messages.postdate DESC;";
$rs = $etomite->dbQuery($sql); # Execute the Query
$limit = $etomite->recordCount($rs); # Number of messages found
# Loop through each of the messages and format for display
for ($y = 0; $y < $limit; $y++) {
$guestbookrec = $etomite->fetchRow($rs);
$poster = str_replace($type.$gap,"",$guestbookrec['subject']);
$message = nl2br($guestbookrec['message']);
$postdate = strftime($dateformat,
$guestbookrec['postdate']+$server_offset_time);
$output .= "Date: $postdate<br />Poster: $poster<br /><br
/>Bericht: <br />$message<br /><br /><hr /><br />";
}
}
# If no valid GuestBook owner is found display error message...
else $output = "GuestBook User/Manager not found... Check your
settings...";
#
return $output;
# END OF CODE #
----------
einde
Met bovenstaande code krijg ik de tekst, bijvoorbeeld ' :-) '.
*Nu* heb ik een comment toegevoegd zodat er maar 1 str_replace regel is
en de smiley wordt *wel* weergegeven... :
// $message = $_POST['message'];
$message = str_replace(":-)", "<img
src=\"./assets/images/smilies/a1.gif\">", $_POST['message']);
/*
$message = str_replace(":-(", "<img
src=\"./assets/images/smilies/a2.gif\">", $_POST['message']);
$message = str_replace(";-)", "<img
src=\"./assets/images/smilies/a3.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a4.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a5.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a6.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a7.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a8.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a9.gif\">", $_POST['message']);
$message = str_replace("", "<img
src=\"./assets/images/smilies/a10.gif\">", $_POST['message']);
$message = str_replace(":confused:", "<img
src=\"./assets/images/smilies/a11.gif\">", $_POST['message']);
*/
# Query to INSERT a new GuestBook message into user_messages
Ik hoop dat het een beetje duidelijk is... ;-) Alvast bedankt voor enige
inzichten.
[1] http://www.etomite.org/browsesnippet...lst_category=9
--
Met vriendelijke groet / Best regards,
Jan Reilink, VEVIDA Nederland BV
Postbus 329, 9700 AH GRONINGEN, +31(0)50 - 5492234

Likes:
![[PHP] str_replace probleem](https://www.webhostingtalk.nl/images/WHT_rd/misc/dT.png)
", "<img
", "<img
", "<img
", "<img
", "<img
", "<img
", "<img
Quote
' ,'
' , ...);