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

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

-VladK- 22-09-06 14:27

[PHP] עזרה בניסיון לבצעה STR_REPLACE על כמה דברים בעזרת לולאה
 
ובכן....יכול להיות שלא הבנתם את הכותרת...ותאמת...אני לא מאשים אותכם |קורץ|

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

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

בקיצור אני מבובלבל לגמרי!

הקוד הוא כזה:
PHP קוד:

<?
function str_tpl($dir,$file,$what,$whith){
    
$tpl file($dir."/".$file.".tpl");
    if(
$what != NULL AND $whith != NULL){
        
$what_s explode("/"$what);
        
$whith_s explode("/"$whith);
        
$count1 count($what_s);
        
$x 0;
        for(
$i=1;$i<=$count1;$i++){
            
$tpl .= str_replace ($what_s[$x], $whith_s[$x], $tpl);
            
$x++;
        }
    }
    foreach (
$tpl as $cont){
        
$value .= $cont;
    }
    return 
$value;
}

echo 
str_tpl("style","header","<*CSS_NUM*>",1);
$block str_tpl("style","block","<*BLOCK_TITLE*>/<*BLOCK_CONTENT*>","כותרת/תוכן");
echo 
str_tpl("style","index_body","<*BLOCKS*>",$block);
echo 
str_tpl("style","footer",NULL,NULL);
?>

אני ישמח לעזרה.

עריכה:
זה מראה לי את השגיאה הבאה:
Warning: Invalid argument supplied for foreach() in *** on line 14

RS324 22-09-06 15:20

כנראה ש $tpl הוא לא מערך זה 1 , 2 בשביל יעילות הייתי ממליץ לך להשתמש ב preg_match_all ולשחק עם זה או להשתמש ב preg_replace_callback()

בהצלחה

עריכה:

שים לב למשפט הזה :

PHP קוד:

$tpl .= str_replace ($what_s[$x], $whith_s[$x], $tpl); 

אין לך את המשתנה X בכלל לפני השורה הזאת, כנראה שהוא NULL

-VladK- 22-09-06 15:27

אהההם....כפי שידוע לי FILE מחזיר ערך של מערך...מה עושה הפונקציה preg_match_all?
ומה עושה הפונקציה preg_replace_callback?

בקשר למשפט...המשתנה X כן קיים...הוא שווה ל0...שמתי אותו לפני הלולאה....

RS324 22-09-06 15:32

תעשה PRINT_R ל FILE ותראה מה אתה מקבל

-VladK- 22-09-06 15:41

וואלה צודק...אבל אני לא מבין מה זה בדיוק אומר...כי תכלס ככה:
PHP קוד:

<?
function str_tpl($dir,$file,$what,$whith){
    
$tpl file($dir."/".$file.".tpl");
    if(
$what != NULL AND $whith != NULL){
        
$tpl str_replace ($what$whith$tpl);
    }
    foreach (
$tpl as $cont){
        
$value .= $cont;
    }
    return 
$value;
}

echo 
str_tpl("style","header","<*CSS_NUM*>",1);
$block str_tpl("style","block","<*BLOCK_TITLE*>","כותרת");
echo 
str_tpl("style","index_body","<*BLOCKS*>",$block);
echo 
str_tpl("style","footer",NULL,NULL);
?>


-VladK- 22-09-06 17:35

אופסי...יצא לי בטעות דאבל :-/

RS324 22-09-06 18:01

אחרי

PHP קוד:

 $tpl file($dir."/".$file.".tpl"); 

תכתוב :

PHP קוד:

print_r($tpl); 

ותדביק פה מה שזה מוציא...

-VladK- 22-09-06 18:03

עשיתי את זה כשאמרתה לי לעשות PRINT_R בפעם הראשונה...
זה הראה לי משהו כזה:
array ( 1=> 2=> 3=>) and so on....

הנה צילום מסך:
http://img60.imageshack.us/img60/7286/untitledgk9.png

RS324 22-09-06 18:07

יופי אבל מה היה בתוך....
חח
אתה מחסיר את החלקים החשובים

-VladK- 22-09-06 18:10

בתוך מה?!? מה יש בתוך הקבצים שאני מאנקלד?


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

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