2009-11-17 28 views
0

在我的文件中使用這個函數simplexml_load_string(),這是做搜索lucene的基礎。 但它不工作在php4。備用到php4中的simplexml_load_string()

請給我一個類似於這個函數的功能,這樣我就不必更改我的編碼了。

這是我的代碼示例: -

function handleResponse($data) 
    { 
     if ($data) 
     { 
      $xml = simplexml_load_string($data); 
      $results = array(); 
      foreach ($xml->result->doc as $story) 
      { 
       $xmlarray = array(); 
       try 
       { 
        foreach ($story as $item) 
        { 
         $name = $item->attributes()->name; 
         $value = $item; 
         $xmlarray["$name"] = "$value"; 
        } 
       } 
       catch (Exception $e) 
       { 
        echo 'Problem handling XML array.'; 
       } 
       if ($this->debug) echo "checking if ".$xmlarray['score']." > ".$this->min_score; 
       if ($xmlarray['score'] > $this->min_score) $results[] = $xmlarray; 
      } 
      $results['response']=$xml->result->attributes()->numFound; 
     } 
     else 
     { 
      $results=false; 
     } 
     return $results; 
    } 

這裏$的數據是,如

XML格式的數據
<?xml version="1.0" encoding="UTF-8"?> 
<response> 

<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">2</int> 
<lst name="params"> 
    <str name="explainOther"/> 
    <str name="fl">*,score</str> 

    <str name="indent">on</str> 
    <str name="start">0</str> 
    <str name="q">reliance</str> 
    <str name="hl.fl"/> 
    <str name="qt">dismax</str> 
    <str name="wt">dismax</str> 

    <str name="version">2.2</str> 
    <str name="rows">10</str> 
</lst> 
</lst> 
<result name="response" numFound="5" start="0" maxScore="1.7840868"> 
<doc> 
    <float name="score">1.7840868</float> 
    <str name="scheme_name">Reliance Diversified Power Sector Fund - Growth</str> 

    <str name="scheme_nav">75.23</str> 
</doc> 
<doc> 
    <float name="score">1.7840868</float> 
    <str name="scheme_name">Reliance Diversified Power Sector Fund - Growth</str> 
    <str name="scheme_nav">75.23</str> 
</doc> 
</result> 
</response> 

請在PHP4推薦類似的一些功能simplexml_load_string()讓我能逃避改變我的編碼。

回答

0

PHP4不支持異常。嘗試刪除try...catch塊。
編輯:也可以參考下面的評論,SimpleXML擴展名僅限於PHP5。在PHP4中,您應該使用XML Parser擴展名,但這也意味着您需要必須更改您的代碼。一個簡單的Google search給出了關於如何使用這個擴展的a tutorial的鏈接。

+1

我想他指的是SimpleXML函數其不在本地PHP4。 –

+0

......但這並不意味着你不正確。 –

+0

刪除這將無法幫助我,因爲這個功能是行不通的:-( – developer

0

我討厭自己當人們告訴我更新我的環境而不是回答我的問題,但是沒有辦法切換到PHP5嗎?到目前爲止,PHP4確實已經過時,並且在我看來不再適合新項目。 PHP5帶來了原生XML支持,而PHP4解決方案都非常緩慢。

+0

我同意,我們將遷移到新的,但這將需要一些時間,我的這項工作需要現在只生活。這就是爲什麼iam問這個問題 – developer

+1

我無法想象會浪費多少錢運行PHP 4而不是PHP 5.3會浪費相當多的服務器資源,再加上將完美有效的代碼轉換爲非常非常舊的PHP版本的時間,以及修復您將遇到的錯誤,因爲您的PHP 4解決方案無法實現SimpleXML的迭代器以及由於PHP 4的按值範例而不時出現的神祕錯誤。小時。 –

+0

+1所有有效分數... –