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

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

Shon12 01-03-08 19:03

עזרה |בקשר לייעול.
 
שלום,

אז ככה יש לי תמונת GD שמראה את שם הדפדפן + הווינדוס.
עכשיו הבדיקה שלי זה משהו כזה:
PHP קוד:

$name "";
   if (
preg_match("/msie 6.0/i",$_SERVER['HTTP_USER_AGENT']))
   {
   
$name .= "IE 6";
   }
   elseif (
preg_match("/msie 7.0/i",$_SERVER['HTTP_USER_AGENT']))
   {
   
$name .= "IE 7";
   }
   elseif (
preg_match("/firefox/i",$_SERVER['HTTP_USER_AGENT']))
   {
   
$name .= "fire fox";
   } 

והשיטה הזו נראה לי זוללת משאבים,
אשמח להצעות ייעול,

תודה

psycho 01-03-08 19:14

זוללת משאבים? כמה זמן לוקח לביטוי רגולרי ולהשמה של התוצאה בתוך משתנה? בחייאת גבר =)
תבדוק כמה זמן ריצה לוקח לכל שלב
ואז תגיד לי כמה זה זולל משאבים=]

Meir 01-03-08 19:17

אם אתה מחפש מחרוזות ללא צורך בתנאים מסויימים יש עדיפות לstrpos.

Shon12 01-03-08 19:21

ציטוט:

נכתב במקור על ידי psycho (פרסם 613152)
זוללת משאבים? כמה זמן לוקח לביטוי רגולרי ולהשמה של התוצאה בתוך משתנה? בחייאת גבר =)
תבדוק כמה זמן ריצה לוקח לכל שלב
ואז תגיד לי כמה זה זולל משאבים=]

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

daMn 01-03-08 19:23

http://il.php.net/get_browser
תקרא את ההערה, צריך לשנות בהגדרות של הphp משהו.
אם אין לך גישה קח פונקציה נחמדה שבניתי :
PHP קוד:

<?php
function userBrowser($UserAgent)
{
    
$browsers = array("Firefox""MSIE 6.0""MSIE 7.0");
    for (
$i=0;$i<=count($browsers);$i++)
    {
        
$pos strpos($UserAgent$browsers[$i]);
        if (
$pos == true)
            return 
$browsers[$i];
    }
}
echo 
userBrowser($_SERVER['HTTP_USER_AGENT']);
?>


Meir 01-03-08 19:31

אפשר גם ככה:

PHP קוד:

<?php

$browser 
'msie 6.0';
$browsers = array('msie 6.0' => 'IE 6''msie 7.0' => 'IE 7');

if (
preg_match('/('.implode('|'array_keys($browsers)).')/i'$browser$match))
{
    echo 
$browsers[$match[1]];
}

?>


Shon12 01-03-08 21:51

ציטוט:

נכתב במקור על ידי daMn (פרסם 613157)
http://il.php.net/get_browser
תקרא את ההערה, צריך לשנות בהגדרות של הphp משהו.
אם אין לך גישה קח פונקציה נחמדה שבניתי :
PHP קוד:

<?php
function userBrowser($UserAgent)
{
    
$browsers = array("Firefox""MSIE 6.0""MSIE 7.0");
    for (
$i=0;$i<=count($browsers);$i++)
    {
        
$pos strpos($UserAgent$browsers[$i]);
        if (
$pos == true)
            return 
$browsers[$i];
    }
}
echo 
userBrowser($_SERVER['HTTP_USER_AGENT']);
?>


תודה רבה !
רק למשל אני רוצה להציג את שם הווינדוס אני מעוניין שהוא יחזיר את שם הווינדוס הספציפי ולא: NT 5.1למשל..

daMn 01-03-08 23:55

ציטוט:

נכתב במקור על ידי Shon12 (פרסם 613205)
תודה רבה !
רק למשל אני רוצה להציג את שם הווינדוס אני מעוניין שהוא יחזיר את שם הווינדוס הספציפי ולא: NT 5.1למשל..

אז תעשה ככה...
PHP קוד:

<?php
function userBrowser($UserAgent)
{
    
$browsers = array("Firefox" => "ff""MSIE 6.0" => "ie6""MSIE 7.0" => "ie7");
    foreach (
$browsers as $key => $val)
    {
        
$pos strpos($UserAgent$key);
        if (
$pos == true)
            return 
$val;
    }
}
echo 
userBrowser($_SERVER['HTTP_USER_AGENT']);
?>


WebProject 02-03-08 00:03

בתיכנות מודדים בכלליות, לא לפי כל פונקציה, הקוד שלך הוא סה"כ Big-O(n), לא משהו חריג.


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

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