脚本宝典收集整理的这篇文章主要介绍了使用PHP解码多个xml标签,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
function b($params) { $XMldata = '<?xML version="1.0" encoding="UTF-8" ?><root>' . html_entITy_decode($params['data']) . '</root>'; $lang = ucFirst(strtolower($params['lang'])); if (simplexml_load_string($xmldata) === FALSE) { return $params['data']; } else { $langxmlobj = new SimpleXMLElement($xmldata); if ($langxmlobj -> $lang) { return $langxmlobj -> $lang; } else { return $params['data']; } } }
并尝试
$params['data'] = '<French>Service DNS</French><English>DNS Service</English> - <French>DNS Gratuit</French><English>Free DNS</English>'; $params['lang'] = 'French'; $a = b($params); PRint_r($a);
但是产出:
Service DNS
Service DNS - DNS Gratuit
拉出我的头发.任何快速帮助或指示将不胜感激.
编辑:优化需求.
似乎我不够清楚;所以让我展示另一个例子
如果我有以下字符串作为输入:
The <French>Chat</French><English>Cat</English> is very happy to stay on stackoverflow because it makes him <French>Heureux</French><English>Happy</English> to kNow that it is the best <French>EndROIt</French><English>Place</English> to find good PEople with good <French>Réponses</French><English>answers</English>.
因此,如果我使用’French’运行函数,它将返回:
The Chat is very happy to stay on stackoverflow because it makes him Heureux to kNow that it is the best Endroit to find good people with good Réponses.
用’英语’:
The Cat is very happy to stay on stackoverflow because it makes him Happy to kNow that it is the best Place to find good people with good Answers.
希望现在更清楚了.
<French>Chat</French><English>Cat</English>
有了这个:
"@(<($defLangs)>.*?</\\2>)+@i"
然后使用回调解析右边的lang str.
如果你有PHP 5.3,那么:
function transLang($str,$lang,$defLangs = 'French|English') { return preg_replace_callback ( "@(<($defLangs)>.*?</\\2>)+@i",function ($matches) use($lang) { preg_match ( "/<$lang>(.*?)<\/$lang>/i",$matches [0],$longSec ); return $longSec [1]; },$str ); } echo transLang ( $str,'French' ),"\n",transLang ( $str,'English' );
如果没有,有点复杂:
class LangHelper { private $lang; function __construct($lang) { $this->lang = $lang; } public function callback($matches) { $lang = $this->lang; preg_match ( "/<$lang>(.*?)<\/$lang>/i",$subMatches ); return $subMatches [1]; } } function transLang($str,$defLangs = 'French|English') { $langHelper = new LangHelper ( $lang ); return preg_replace_callback ( "@(<($defLangs)>.*?</\\2>)+@i",array ( $langHelper,'callback' ),'English' );
以上是脚本宝典为你收集整理的使用PHP解码多个xml标签全部内容,希望文章能够帮你解决使用PHP解码多个xml标签所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。