הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   PHP | עבודה עם קבצים בעברית (https://hosts.co.il/forums/showthread.php?t=97047)

kfir-d 02-05-12 11:21

PHP | עבודה עם קבצים בעברית
 
היי,
בניתי איזה סקריפט קטן שמציג קבצים (תמונות) אשר ממוקמות בתוך תיקיה הבעיה עם תיקיות בעברית הוא פשוט לא מתייחס,
אם התיקיה באנגלית זה עובד מעולה
זה הקוד

PHP קוד:

<?php 
$get
="gallery_files";
$f=$_GET['f'];
$f iconv"iso-8859-8""utf-8"$f);
$ftpurl="../../'.$get.'";
$handle opendir('../../'.$get.'/'.$f.''); 
while (
false !== ($file readdir($handle))) { 
$file iconv"iso-8859-8""utf-8"$file);

    if (
$file != "." && $file != ".." && $file != "name.txt") {

$porm=end(explode("."$file));

switch (
$porm){

    case 
jpg:
echo
"הצגת תמונה";
        break;
default:
echo
"";
}
    } 
}
closedir($handle);
?>


Programnnd 02-05-12 11:52

אולי תנסה קידוד windows-1255

kfir-d 02-05-12 14:46

ניסיתי כבר לא עובד

DoLet 02-05-12 16:05

אני לא בטוח אבל תנסה אולי Hex code...

kfir-d 02-05-12 16:28

ציטוט:

נכתב במקור על ידי DoLet (פרסם 843200)
אני לא בטוח אבל תנסה אולי Hex code...

לא מכיר אני אשמח להסבר

Daniel 02-05-12 22:21

PHP קוד:

<?php
$get
="gallery_files";
$f=$_GET['f'];
$f_converted iconv"iso-8859-8""utf-8"$f);
var_dump($f);
echo 
"Directory:\n";
print_r(scandir('../../'.$get.'/'));
echo 
"Normal:\n";
print_r(scandir('../../'.$get.'/'.$f.''));
echo 
"Converted:\n";
print_r(scandir('../../'.$get.'/'.$f_converted.''));
?>

תסתכל ותראה אם התוצאות מתאימות למה שאתה מצפה לקבל - ואם עדיין לא מצליח אתה מוזמן לפרסם את הפלט.

kfir-d 03-05-12 08:50

קוד:

string(12) "ניסיון" Directory: Array ( [0] => . [1] => .. [2] => 123456 [3] => bitl [4] => test [5] => ������ [6] => ���� ) Normal:
Warning: scandir(../../gallery_files/ניסיון) [function.scandir]: failed to open dir: No such file or directory in /home/mobi/domains/domain.com/public_html/models/gallery/index.php on line 52

Warning: scandir() [function.scandir]: (errno 2): No such file or directory in /home/mobi/domains/domain.com/public_html/models/gallery/index.php on line 52
Converted: Array ( [0] => . [1] => .. [2] => 123456 [3] => bitl [4] => test [5] => ������ [6] => ���� )


Daniel 03-05-12 09:53

באיזה קידוד שמור הקובץ עם הקוד עצמו? יכול להיות שהוא לא UTF-8?

kfir-d 03-05-12 11:17

UTF-8 בדוק

DoLet 03-05-12 15:11

������ זה בעיקר בעיות קידוד,
תנסה לתת הרשאה של 777 לתיקיה שאתה סורק.

תנסה לעשות עם HEX CODE כמו שאמרתי לך:
http://www.swingnote.com/tools/texttohex.php

תשתמש ב- Hex Encoded for URL.

kfir-d 03-05-12 17:32

קוד:

Warning: opendir(../../gallery_files/ניסיון) [function.opendir]: failed to open dir: No such file or directory in /home/mobi/domains/domain.com/public_html/models/gallery2/index2.php on line 8

Warning: readdir(): supplied argument is not a valid Directory resource in /home/mobi/domains/domain.com/public_html/models/gallery2/index2.php on line 9

Warning: closedir(): supplied argument is not a valid Directory resource in /home/mobi/domains/domain.com/public_html/models/gallery2/index2.php on line 38

Warning: opendir(../../gallery_files/ניסיון) [function.opendir]: failed to open dir: No such file or directory in /home/mobi/domains/domain.com/public_html/models/gallery2/index2.php on line 50

Warning: readdir(): supplied argument is not a valid Directory resource in /home/mobi/domains/domain.com/public_html/models/gallery2/index2.php on line 52

Warning: closedir(): supplied argument is not a valid Directory resource in /home/mobi/domains/domain.com/public_html/models/gallery2/index2.php on line 75


kfir-d 06-05-12 16:33

אם לא הבנתם זה לא עובד :(

Gmedia 07-05-12 10:24

פשוט תקרא לו example ותכוון אליו htaccess.

kfir-d 08-05-12 09:30

לא הבנתי
ולא נראה לי יעזור כי הקוד מתנהג כאילו אין בתיקיה הזאת כלום (ויש :-))

Tomer 08-05-12 10:22

העמוד עצמו מקודד כ- UTF-8 Without BOM ?

kfir-d 08-05-12 10:31

כן
עוד משהו ניסיתי לעשות ככה רק כדי לקבל משהו וכלום


PHP קוד:

$f=$_GET['f'];
$f iconv"iso-8859-8""utf-8"$f);

$dir="../../gallery_files/{$f}";

print_r(glob($dir."/*.*")); 

וזה מה שקיבלתי שבGET היה טקסט בעברית
קוד:

Array ( [0] => ../../gallery_files//)
שהיה טקסט באנגלית אז הוא הציג הכול
אני משתגע כבר :\

kfir-d 10-05-12 09:31

HELP?

Itay 10-05-12 18:52

לא מבין עם מה הסתבכת..
http://www.itayp.com/hebtst - ה-listing הרגיל של אפאצ'י (צריך להחליף את הקידוד בעמוד ל-windows-1255, משום מה הוא לא מוכן לתפוס כשאני מגדיר אותו או את ה-ISO ב-htaccess)
http://www.itayp.com/hebtst/heb.php
עם הקוד הכי בסיסי מהדוגמאות ב-php.net:
PHP קוד:

if($handle opendir('.'))
{
    while(
false !== ($entry readdir($handle)))
    {
        if(
$entry != "." && $entry != "..") echo "$entry<br />\n";
    }
    
closedir($handle);


העמוד עצמו שמור ב-UTF-8, הטקסטים מוצגים ב-windows-1255

kfir-d 10-05-12 23:19

הבעיה שלי היא לא עם השמות של הקבצים האלה עם השמות של התיקיות שמכילות את הקבצים, ולא עובד מה שנתת ניסיתי כבר

Haimz 11-05-12 18:54

טוב אז ראיתי שאתה כבר כמה ימים עם הבעיה הזו, אז ניסיתי, לי זה פועל מעולה, הקידוד של הקובץ הוא ANSI
לי זה פועל מעולה
הוספתי תיקייה בעברית, וזה סורק לי את כל התיקיות שיש במקום של הקובץ
אם אתה רוצה לסרוק קבצים מתוך תיקייה בעברית, פשוט תנווט את המשתנה dir
PHP קוד:

<?php
    
    error_reporting
(E_ALL E_NOTICE);
    
    
$dir "./";
    
    
// בשביל לסרוק קבצים מתיקייה בעברית אתה עושה:
    // $dir = "./תיקייה";

    
if (is_dir($dir)) 
    {
        if (
$dh opendir($dir)) 
        {
            while ((
$file readdir($dh)) !== false
            {
                
$file iconv("Windows-1255","UTF-8",$file);
                echo 
$file "<br />";
            }
            
closedir($dh);
        }
    }
?>

תעדכן :)

עריכה:
עכשיו שמתי לב בדוגמה הראשית שלך השתמשת בGET לניווט, מומלץ שלא ..

kfir-d 12-05-12 18:29

מה הייתה ממליץ אם לא GET ?

Haimz 13-05-12 14:25

ציטוט:

נכתב במקור על ידי kfir-d (פרסם 844013)
מה הייתה ממליץ אם לא GET ?

הקבצים פעלו לך?

בכל מקרה את כן יכול להשתמש בGET וכמובן לאבטח אותו ואז להשתמש בSWITCH כדי למנוע פריצות, עדיפות עליונה.., אני בדרך כלל מקבל רק את האותיות מהGET ומנווט לקובץ (כמובן עם בדיקה)

kfir-d 13-05-12 17:05

שמתי לב שהקבצים שלי עבדו אם רשמתי את שם התיקיה (בעברית) בתוך הקוד ולא דרך GET.
דרך GET עברית לא מגיב לי בכלל.
אני לא מוצא כרגע רעיון איך, אשמח לפתרונות אם יש, תודה :)

Daniel 13-05-12 17:43

נסה לכתוב בעמוד קישור ז"א
HTML קוד:

<a href ....> TEXT </a>
ולהיכנס דרכו, זה אמור לעבוד.

אגב, עדיף לך במקום readdir,opendir להשתמש ב-scandir....

Haimz 14-05-12 13:15

תעשה ECHO לGET ואז תשחק בקוד עד שיצא לך שהטקסט מהGET יכתב בעברית,
תנסה את זה:
קוד:

$text = iconv("Windows-1255","UTF-8",$_GET['text']);
נסה להחליף בין אפשריות הקידוד ושטויות כאלה..
בדוק יפעל לך

kfir-d 23-05-12 15:21

ניסיתי כבר לא עובד


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

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