הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 27-08-09, 01:50   # 1
SmartSeo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 531

SmartSeo לא מחובר  

[בעיה] htmlentities בצ'ט

יש לי מערכת צ'ט בנוייה שאני רוצה להשתמש בה... הבעיה היא.. שכשכותבים בה הודעות באנגלית הכל סבבה. אבל כשכותבים בעברית זה יוצא סימני שאלה
הבעיה היא ב htmlentities

אלה השורות הבעייתיות:
PHP קוד:
    $nick=htmlentities(utf8_decode($v->user));
    
$msg=htmlentities(utf8_decode($v->message)); 
ניסיתי המון דברים וכולם לא עזר. אשמח לעזרה.

תודה
  Reply With Quote
ישן 28-08-09, 16:59   # 2
SmartSeo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 531

SmartSeo לא מחובר  

מישהו? (מצטער על ההקפצה אבל עברו יומים)
  Reply With Quote
ישן 28-08-09, 17:16   # 3
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

אני לא מאמין שהבעיה בhtmlentities אלא בutf8_decode. תנסה למחוק לרגע את הutf8_decode ותראה את הoutput..
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
ישן 29-08-09, 19:25   # 4
SmartSeo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 531

SmartSeo לא מחובר  

עדיין... סימני שאלה...
הנה כל הקובץ.
PHP קוד:
<?php
header
("Content-Type: text/plain; charset=windows-1255");

define('INSIDE'  true);
define('INSTALL' false);

$ugamela_root_path './';
include(
$ugamela_root_path 'extension.inc');
include(
$ugamela_root_path 'common.' $phpEx);

// blocking non-users
if ($IsUserChecked == false)
{
    
includeLang('login');
    
message($lang['Login_Ok'], $lang['log_numbreg']);
}

// The old messages are erased
$timemoment time();
$time_1h $timemoment 3600;

// One selects the messages present in the base of data
$query doquery("SELECT * FROM {{table}} ORDER BY messageid ASC"'chat');

while (
$v mysql_fetch_object($query))
{

    
$nick=htmlentities($v->user);
    
$msg=htmlentities($v->message);  
    
$pattern = array();
    
$replace = array();

    
// The different fonts (bold, italics, colors, etc ...)
    
$pattern[] = "#\[a=(https?|ftp|news)(.+)\](.+)\[/a\]#isU";
    
$replace[] = "<a href=\"$1$2\" target=\"_blank\">$3</a>";
    
    
$pattern[] = "#\[b\](.+)\[/b\]#isU";
    
$replace[] = "<b>$1</b>";
    
    
$pattern[] = "#\[i\](.+)\[/i\]#isU";
    
$replace[] = "<i>$1</i>";
    
    
$pattern[] = "#\[u\](.+)\[/u\]#isU";
    
$replace[] = "<u>$1</u>";
    
    
$pattern[] = "#\[c=(blue|yellow|green|pink|red|orange)\](.+)\[/c\]#isU";
    
$replace[] = "<font color=\"$1\">$2</font>";

    
// Smileys with their shortcuts
    
$pattern[] = "#:c#isU";
    
$replace[] = "<img src=\"images/smileys/cry.png\" align=\"absmiddle\" title=\":c\" alt=\":c\">";
    
    
$pattern[] = "#(?!http):/(?!/)#isU";
    
$replace[] = "<img src=\"images/smileys/confused.png\" align=\"absmiddle\" title=\":/\" alt=\":/\">";
    
    
$pattern[] = "#o0#isU";
    
$replace[] = "<img src=\"images/smileys/dizzy.png\" align=\"absmiddle\" title=\"o0\" alt=\"o0\">";
    
    
$pattern[] = "#\^\^#isU";
    
$replace[] = "<img src=\"images/smileys/happy.png\" align=\"absmiddle\" title=\"^^\" alt=\"^^\">";
    
    
$pattern[] = "#:D#isU";
    
$replace[] = "<img src=\"images/smileys/lol.png\" align=\"absmiddle\" title=\":D\" alt=\":D\">";
    
    
$pattern[] = "#:\|#isU";
    
$replace[] = "<img src=\"images/smileys/neutral.png\" align=\"absmiddle\" title=\":|\" alt=\":|\">";
    
    
$pattern[] = "#:\)#isU";
    
$replace[] = "<img src=\"images/smileys/smile.png\" align=\"absmiddle\" title=\":)\" alt=\":)\">";
    
    
$pattern[] = "#:o#isU";
    
$replace[] = "<img src=\"images/smileys/omg.png\" align=\"absmiddle\" title=\":o\" alt=\":o\">";
    
    
$pattern[] = "#:p#isU";
    
$replace[] = "<img src=\"images/smileys/tongue.png\" align=\"absmiddle\" title=\":p\" alt=\":p\">";
    
    
$pattern[] = "#:\(#isU";
    
$replace[] = "<img src=\"images/smileys/sad.png\" align=\"absmiddle\" title=\":(\" alt=\":(\">";
    
    
$pattern[] = "#;\)#isU";
    
$replace[] = "<img src=\"images/smileys/wink.png\" align=\"absmiddle\" title=\";)\" alt=\";)\">";
    
    
$pattern[] = "#:s#isU";
    
$replace[] = "<img src=\"images/smileys/shit.png\" align=\"absmiddle\" title=\":s\" alt=\":s\">";

    
$msg preg_replace($pattern$replace$msg);

    
// Message
    
$msg "<div align=left>{$nick}>{$msg}<br></div>";
    echo (
$msg);
}

?>
  Reply With Quote
ישן 29-08-09, 19:31   # 5
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

מצד אחד header("Content-Type: text/plain; charset=windows-1255"); מצד שני אתה עובד בUTF8 תחליט.
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
ישן 30-08-09, 06:01   # 6
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

The Chosen Generl - זו הסיבה שהוא עושה דהקודינג ולא אנקודינג.


הפתרון פשוט: הפונקציה utf8_decode והפונקציה utf8_encode בעייתיות, והם לא תומכות באופן מלא מכל הסימנים.
תשתמש בICONV

בעברית פשוטה תעשה ככה:
PHP קוד:
    $nick=htmlentities(iconv('utf8','windows-1255',$v->user));
    
$msg=htmlentities(iconv('utf8','windows-1255',$v->message)); 
  Reply With Quote
ישן 30-08-09, 12:20   # 7
SmartSeo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 531

SmartSeo לא מחובר  

ציטוט:
נכתב במקור על ידי Baku צפה בהודעה
The Chosen Generl - זו הסיבה שהוא עושה דהקודינג ולא אנקודינג.


הפתרון פשוט: הפונקציה utf8_decode והפונקציה utf8_encode בעייתיות, והם לא תומכות באופן מלא מכל הסימנים.
תשתמש בICONV

בעברית פשוטה תעשה ככה:
PHP קוד:
    $nick=htmlentities(iconv('utf8','windows-1255',$v->user));
    
$msg=htmlentities(iconv('utf8','windows-1255',$v->message)); 
לצערי יש עדיין סימני שאלה
הקוד:
PHP קוד:
<?php
header
("Content-Type: text/plain; charset=windows-1255");

define('INSIDE'  true);
define('INSTALL' false);

$ugamela_root_path './';
include(
$ugamela_root_path 'extension.inc');
include(
$ugamela_root_path 'common.' $phpEx);

// blocking non-users
if ($IsUserChecked == false)
{
    
includeLang('login');
    
message($lang['Login_Ok'], $lang['log_numbreg']);
}

// The old messages are erased
$timemoment time();
$time_1h $timemoment 3600;

// One selects the messages present in the base of data
$query doquery("SELECT * FROM {{table}} ORDER BY messageid ASC"'chat');

while (
$v mysql_fetch_object($query))
{

    
$nick=htmlentities(iconv('UTF-8''windows-1255'$v->user));
    
$msg=htmlentities(iconv('UTF-8''windows-1255'$v->message));
    
$pattern = array();
    
$replace = array();

    
// The different fonts (bold, italics, colors, etc ...)
    
$pattern[] = "#\[a=(https?|ftp|news)(.+)\](.+)\[/a\]#isU";
    
$replace[] = "<a href=\"$1$2\" target=\"_blank\">$3</a>";
    
    
$pattern[] = "#\[b\](.+)\[/b\]#isU";
    
$replace[] = "<b>$1</b>";
    
    
$pattern[] = "#\[i\](.+)\[/i\]#isU";
    
$replace[] = "<i>$1</i>";
    
    
$pattern[] = "#\[u\](.+)\[/u\]#isU";
    
$replace[] = "<u>$1</u>";
    
    
$pattern[] = "#\[c=(blue|yellow|green|pink|red|orange)\](.+)\[/c\]#isU";
    
$replace[] = "<font color=\"$1\">$2</font>";

    
// Smileys with their shortcuts
    
$pattern[] = "#:c#isU";
    
$replace[] = "<img src=\"images/smileys/cry.png\" align=\"absmiddle\" title=\":c\" alt=\":c\">";
    
    
$pattern[] = "#(?!http):/(?!/)#isU";
    
$replace[] = "<img src=\"images/smileys/confused.png\" align=\"absmiddle\" title=\":/\" alt=\":/\">";
    
    
$pattern[] = "#o0#isU";
    
$replace[] = "<img src=\"images/smileys/dizzy.png\" align=\"absmiddle\" title=\"o0\" alt=\"o0\">";
    
    
$pattern[] = "#\^\^#isU";
    
$replace[] = "<img src=\"images/smileys/happy.png\" align=\"absmiddle\" title=\"^^\" alt=\"^^\">";
    
    
$pattern[] = "#:D#isU";
    
$replace[] = "<img src=\"images/smileys/lol.png\" align=\"absmiddle\" title=\":D\" alt=\":D\">";
    
    
$pattern[] = "#:\|#isU";
    
$replace[] = "<img src=\"images/smileys/neutral.png\" align=\"absmiddle\" title=\":|\" alt=\":|\">";
    
    
$pattern[] = "#:\)#isU";
    
$replace[] = "<img src=\"images/smileys/smile.png\" align=\"absmiddle\" title=\":)\" alt=\":)\">";
    
    
$pattern[] = "#:o#isU";
    
$replace[] = "<img src=\"images/smileys/omg.png\" align=\"absmiddle\" title=\":o\" alt=\":o\">";
    
    
$pattern[] = "#:p#isU";
    
$replace[] = "<img src=\"images/smileys/tongue.png\" align=\"absmiddle\" title=\":p\" alt=\":p\">";
    
    
$pattern[] = "#:\(#isU";
    
$replace[] = "<img src=\"images/smileys/sad.png\" align=\"absmiddle\" title=\":(\" alt=\":(\">";
    
    
$pattern[] = "#;\)#isU";
    
$replace[] = "<img src=\"images/smileys/wink.png\" align=\"absmiddle\" title=\";)\" alt=\";)\">";
    
    
$pattern[] = "#:s#isU";
    
$replace[] = "<img src=\"images/smileys/shit.png\" align=\"absmiddle\" title=\":s\" alt=\":s\">";

    
$msg preg_replace($pattern$replace$msg);

    
// Message
    
$msg "<div align=left>{$nick}>{$msg}<br></div>";
    echo (
$msg);
}

?>
  Reply With Quote
ישן 31-08-09, 11:10   # 8
SmartSeo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 531

SmartSeo לא מחובר  

הנה עוד 2 קבצים שקשורים אולי זה יעזור:
PHP קוד:
<?php

ob_start
();
echo <<<html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=windows-1255">
</head>
</html>
html;

define('INSIDE'  true);
define('INSTALL' false);

$ugamela_root_path './';
include(
$ugamela_root_path 'extension.inc');
include(
$ugamela_root_path 'common.' $phpEx);

    
includeLang('chat');
    
$BodyTPL gettemplate('chat_body');

    
$nick $user['username'];
    
$parse $lang;

    
$page parsetemplate($BodyTPL$parse);
    
display($page$lang['Chat'], false);


?>

והקובץ השני:
PHP קוד:
<?php



define
('INSIDE'  true);
define('INSTALL' false);

$ugamela_root_path './';
include(
$ugamela_root_path 'extension.inc');
include(
$ugamela_root_path 'common.' $phpEx);

    if (isset(
$_POST["msg"]) && isset($user['username'])) {
       
$nick trim (str_replace ("+","plus",$user['username']));
       
$msg  trim (str_replace ("+","plus",$_POST["msg"]));
       
$msg  addslashes ($_POST["msg"]);
       
$nick addslashes ($user['username']);
    }
    else {
       
$msg="";
       
$nick="";
    }

    if (
$msg!="" && $nick!="") {
       
$query doquery("INSERT INTO {{table}}(user, message, timestamp) VALUES ('".$nick."', '".$msg."', '".time()."')""chat");
    }

?>
  Reply With Quote
ישן 31-08-09, 19:10   # 9
SmartSeo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 531

SmartSeo לא מחובר  

מצטער לא הצלחתי לערוך אז אני כותב בעוד הודעה:
מצאתי בקובץ השלישי שרשמתי פה את השורה $msg = addslashes ($_POST["msg"]); הפכתי אותה ל $msg = htmlentities(iconv('UTF-8', 'windows-1255', ($_POST["msg"])));

ועכשיו זה לא סימני שאלה אבל גם לא עברית:
זה &ugrave; עבור האות ש
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 13:34.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ