2012-08-14 133 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

相关问题