2010-05-23 204 views
-1

Nah,看起來像是主機故障。縮短代碼

誰能縮短此代碼?

private function replaceFunc($subject) 
    { 
     foreach($this->func as $t) 
     { 
      preg_match_all('/\{'.$t.'\([a-zA-Z,\']+\)\}/i', $subject, $res); 
      for($j = 0; $j < sizeof($res[0]); $j++) 
      { 
       preg_match('/\([a-zA-Z,\']+\)/i', $res[0][$j], $match); 
       if($match > 0) 
       { 
        $prep = explode(", ", substr($match[0], 1, -1)); 
        $args = array(); 
        for($i = 0; $i < sizeof($prep); $i++) 
        { 
         $args[] = substr($prep[$i], 1, -1); 
        } 
       } 
       else 
       { 
        $args = array(); 
       } 
       $subject = preg_replace('/\{'.$t.preg_quote($match[0]).'\}/i', call_user_func_array($t, $args), $subject); 
      } 
     } 
     return $subject; 
    } 
+1

耶穌基督!,等等,你爲什麼在陣列上有你的功能? – Ben 2010-05-23 17:17:37

+0

目前還不清楚HTML與PHP代碼有什麼關係。兩者之間似乎沒有任何明確的聯繫。順便說一句,我去了你鏈接的頁面,我沒有注意到10秒的延遲。加載時間不到1秒。 – 2010-05-23 17:22:46

+0

你爲什麼要這樣插入變量?這已經成爲將PHP中的變量插入到HTML中最糟糕的方式。祝你好運,讓任何人來幫助你... – animuson 2010-05-23 17:27:17

回答

1

您試過Smarty?它已經做到了你所需要的和更多。

+0

是的,我試過了。不過,我真的很喜歡自己創造(至少90%; D)。也許最好的解決方案將回到聰明。 – Misiur 2010-05-23 17:36:00

+0

如果已經爲你建立了一些東西,當你可以解決一個真正的問題時,爲什麼要浪費你的時間重新發明輪子? – Johnsyweb 2010-05-24 03:49:15

+0

在Smarty的案例中,它實際上是做你想做的事情。它已經做到了90%,並且您可以隨時使用自定義插件更改10%。 – Tom 2010-05-24 06:41:00

0

如果您在市場上使用的模板引擎Twigsymfony使用的新模板引擎,比smarty恕我直言。如果您對做不僅僅是簡單的HTML + foreach循環感興趣(它也可以做到這一點),Twig具有諸如模板繼承,宏和低性能開銷等特性。