לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 13-07-2006, 21:11
  Roeen Roeen אינו מחובר  
 
חבר מתאריך: 05.10.05
הודעות: 687
replace בתוך template

שלום..

אני בונה מן מערכת שיש לה קבצי template
בקבצי ה template ישנם משתנים אשר מוגדרים כך: <VAR>
הפונקציה שדרכה אני מדפיס את ה template נקראת print_html

השאלה שלי היא איך אני יכול לשנות בתוך הפונקציה את המשתנים שלי..
אני יראה לכם רעיון שלי איך לעשות את זה ולפיו אני מקווה שתוכלו לעזור לי למצוא את הדרך הנכונה לעשות זאת:

קובץ: tpl-blabla.php:
קוד PHP:
<?php
function bla()
{
echo <<<
END;

hi <USERNAME>
END;
}
?>



הקובץ שדרכו אני קורה לפונקציה print_html:
קוד PHP:
<?php
$myname 
"roee";
print_html(bla(), array('USERNAME'=>$myname));
?>



עכשיו הבעיה היא שאין לי מושג מה לכתוב בפונקציה print_html
היא מקבלת 2 פרמטרים:
- השם של הפונקציה
- ARRAY של המשתנים שהיא צריכה למצוא ולהחליף שנמצאים בתוך הפונקציה


אשמח לקבל הסבר ודוגמא קצרה ופשוטה כדי שאני אבין את העיקרון

תודה רבה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 13-07-2006, 22:22
  Rs3k Rs3k אינו מחובר  
 
חבר מתאריך: 17.05.04
הודעות: 1,454
שלח הודעה דרך ICQ אל Rs3k
בתגובה להודעה מספר 1 שנכתבה על ידי Roeen שמתחילה ב "replace בתוך template"

תלמד קצת על ארגומנטים בפונקציה..
בכל מקרה, אני אתן הסבר קטן על רגל אחת, על ארגומנטים בפונקציה.
לרוב הפונקציות בPHP יש ארגומנטים : echo, print, die, empty ועוד הרבה...

את הערך של הארגומנטים קובעים כאשר קוראים לפונקציה... הסבר בהמשך..

בניית פונקציה עם פרמטרים :
קוד PHP:
<?
/* this function has 2 arguments - $var and $variable */
function func($var,$variable){
    echo $var.$variable;
}
/* executing func and setting values to the arguments - $var = 'argu' & $variable = 'ment' will output 'argument' */
func('argu','ment');
?>


הפונקציה func מוציאה לפלט את הפרמטרים var$ ו variable$...
כאשר אני קורא לפונקציה func אני קובע ערך למשתנים - הצבת הערך בתוך הסוגרים (הפרמטרים מופרדים על ידי פסיק)...
לאחר מכן יוצא לפלט שני הפרמטרים עם הערכים argu ו ment....

אפשר לעשות פרמטרים גם למחלקה - הפרמטרים של פונקצית הקונסטרקטור ישמשו כפרמטרים של המחלקה.

מקווה שהבנת, אם לא, תתעמק קצת בעמוד הזה (עברית - ממש פשוט להבנה) :
http://php.eitan.ac.il/main.php?id=00148
_____________________________________
EVERYTHING SHOULD BE MADE AS SIMPLE AS POSSIBLE, BUT NOT ONE BIT SIMPLER
ALBERT EINSTEIN


נערך לאחרונה ע"י Rs3k בתאריך 13-07-2006 בשעה 22:29.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 15-07-2006, 00:23
  eXeCuT3 eXeCuT3 אינו מחובר  
 
חבר מתאריך: 30.06.06
הודעות: 185
בתגובה להודעה מספר 1 שנכתבה על ידי Roeen שמתחילה ב "replace בתוך template"

אתה יכול להשתמש בביטוי רגולרי, רק שאתה לא יכול להשתמש ב <>, כי אם תשים שם גם HTML זה לא ידע להבדיל בין תג HTML לבין דברים שלך.
תשתמש נגיד ב {USERNAME}
והקוד צריך להיות משהו כזה
קוד PHP:
<?php
function print_html ($string$vars=array()) {
    echo 
preg_replace('/\{(\w+)\}/e''$vars[\'\1\']'$string);
}
?>

והקוד שנתת לא יפעל, כי הפונקציה bla לא מחזירה ערך אלא מדפיסה אותו.
אתה תצטרך לגרום לכך שהפונקציה תחזיר ערך, או שתשתמש ב ob
משהו כזה:

קוד PHP:
<?php
$vars
=array('USERNAME' => 'eXeCuTe');
function 
tem_vars ($string) {
    global 
$vars;
    return 
preg_replace('/\{(\w+)\}/e''$vars[\'\1\']'$string);
}
ob_start('tem_vars');
echo <<<
END;

hi {USERNAME}
END;
ob_end_flush();
?>


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

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 16:52

הדף נוצר ב 0.08 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר