2012-04-19 107 views
0

我已經繼承了一些PHP,解析XML文件來填充一個頁面充滿無序列表,我想知道是否有一種方法來鞏固PHP功能,使他們更有效率。結合PHP功能

有25層左右的功能,如下列:

function oaAccounting(){ 

    // load SimpleXML 
    $term = new SimpleXMLElement('training_list.xml', null, true); 
    echo <<<EOF 
    <ul> 
EOF; 

    foreach($term as $term) 
    { 
    if(preg_match("/accounting/i", $term->keyword)){ 
     echo <<<EOF 
     <li>{$term->name}</li> 
EOF; 
    } 
    } 
    echo '</ul>'; 
} 

每一個掃描的字詞/關鍵字它搜索的XML文件,並將長期作爲一個列表元素特定於一個無序列表功能。下一個函數做同樣的事情,但對於不同的術語/關鍵字,並將其添加到單獨的無序列表中。

是否有一種方法可以將所有這些結合起來以防止必須執行foreach並且如果連續25次?

謝謝!

+2

是的,學習PHP。 – IsisCode 2012-04-19 19:58:16

+1

重寫。你有沒有意識到,每一次迭代都會覆蓋「$ term」?爲什麼正則表達式? XML有xpath。 – KingCrunch 2012-04-19 19:59:20

回答

0

這個修改過的函數需要一個參數,要查找的單詞,然後在preg_match()函數中使用它。所以要使用它,你需要做的就是用你正在搜索的術語來調用它。這應該取代所有的硬編碼功能。

function searchXML($search){ 

    // load SimpleXML 
    $terms = new SimpleXMLElement('training_list.xml', null, true); 
    echo <<<EOF 
    <ul> 
    EOF; 
    foreach($terms as $term) 
    { 
     if(preg_match("/$search/i", $term->keyword)){ 
      echo <<<EOF 
      <li>{$term->name}</li> 
     EOF; 
    }} 
    echo '</ul>'; 
} 
+0

錯誤,您可以用'SimpleXMLElement'覆蓋'$ term'參數。 – 2012-04-19 19:58:45

+1

@Truth這是OP已經寫在他的問題。不知道,爲什麼...... – KingCrunch 2012-04-19 20:00:06

+0

我只注意到了我的錯誤,並在格式化代碼時糾正了它。我不知道這是否值得投票。你可以編輯答案並修改它。 – 2012-04-19 20:00:19

1

摘要您的功能。

通過文件搜索條件作爲該函數的參數,並使用它。

喜歡的東西:

function parse_xml_file($file, $terms) 

調用函數時,然後使用通$file$terms

欲瞭解更多信息,請參閱Teh big bad manual