2012-08-14 130 views
1

如何從字符串的數組鍵中刪除特殊字符?我正在接收來自美國郵政服務的XML,他們正在嘗試在未轉義的XML中對TM和商標進行編碼。所以當我顯示他們的運費時,看起來好像很多亂碼都在我創建的選擇框內。Zend:從字符串中刪除特殊字符

當我嘗試這一點 -

foreach($responseUSPSsimple as $name => $amount) { 
     strip_tags($name); 
    echo $name . '<br />'; 
    } 

我得到這個 -

Express Mail<sup>&reg;</sup> 
Express Mail<sup>&reg;</sup> Hold For Pickup 
Express Mail<sup>&reg;</sup> Sunday/Holiday Delivery 
Express Mail<sup>&reg;</sup> Flat Rate Boxes 
Express Mail<sup>&reg;</sup> Flat Rate Boxes Hold For Pickup 
Express Mail<sup>&reg;</sup> Sunday/Holiday Delivery Flat Rate Boxes 

任何一個可以幫我刪除,可輸出部分?

+0

在很($ name);'需要'$ name = strip_tags($ name);' – drew010 2012-08-14 21:43:45

+0

$ name = strip_tags($ name);不工作。看起來不像它對回聲做任何改變。 – ILikeTurtles 2012-08-14 21:45:44

+0

'$ name'中的任何html標籤都可能不會顯示,因爲您會看到html。但實際上,'strip_tags($ name)'沒有任何名稱,因爲它從未將結果分配給任何變量。 – drew010 2012-08-14 21:51:18

回答

1

我假定您發佈的輸出顯示在瀏覽器中。根據你的評論,$name=strip_tags($name)不起作用,你的原始字符串已經在編碼格式的HTML實體,因此strip_tags不能刪除這樣的標籤。嘗試下面。

foreach($responseUSPSsimple as $name => $amount) { 
    $name = strip_tags(htmlspecialchars_decode($name)); 
    echo $name . '<br />'; 
} 
+0

這適用於我的需求。 – ILikeTurtles 2012-08-15 14:58:08

0

如果你不能找到更精確配合你的問題,你總是可以使用大錘方法從輸出中刪除所有的XML標籤:

foreach($responseUSPSsimple as $name => $amount) { 
    $newName = preg_replace('#<[^>]+>.*?<[^>]+>#', '', $name); 
    echo $newName . '<br />'; 
} 

DEMO

相關問題