Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用XML提要中的preg_匹配_Php_Xml_Preg Match - Fatal编程技术网

Php 使用XML提要中的preg_匹配

Php 使用XML提要中的preg_匹配,php,xml,preg-match,Php,Xml,Preg Match,我正试图掌握preg_比赛的窍门,但我在选择我想要的正则表达式时遇到了困难 我正在使用找到的XML提要herehttp://www.ecb.int/stats/eurofxref/eurofxref-daily.xml 我想找到一种货币和它的价值。它是以数组形式打印的,所以我不知道怎么做。我需要循环吗?即使我知道,我仍然没有弄清楚比赛前的部分 <? $xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxre

我正试图掌握preg_比赛的窍门,但我在选择我想要的正则表达式时遇到了困难

我正在使用找到的XML提要herehttp://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

我想找到一种货币和它的价值。它是以数组形式打印的,所以我不知道怎么做。我需要循环吗?即使我知道,我仍然没有弄清楚比赛前的部分

<?
$xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');
//print_r($xml);

preg_match('/ USD \= \(([0-9\.\,]+)\)$/',$xml,$match);

echo $match[1];
echo $match[2];

?>

任何帮助都将不胜感激

编辑-我试图使用我的链接让PHP网站上的示例正常工作,但我遇到了一系列错误。以下是我所拥有的

<?

$string = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');

$xml = new SimpleXMLElement($string);

$result = $xml->xpath('b/c');

while(list( , $node) = each($result)) {
   echo 'b/c: ',$node,"\n";
}
?>

您正在使用SimpleXML库,因此可以使用

更简单的解决方案是遵循()说明:

$xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');

foreach($xml->Cube->Cube->Cube as $rate){
  if ($rate["currency"] == 'WANTED CURRENCY') {
    echo $rate["rate"].' '.$rate["currency"].'<br/>';
  }
}
$xml=simplexml\u加载文件('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');
foreach($xml->Cube->Cube->Cube as$rate){
如果($rate[“currency”]=“通缉货币”){
echo$rate[“rate”]。$rate[“currency”]。
; } }
您正在使用SimpleXML库,因此可以使用

更简单的解决方案是遵循()说明:

$xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');

foreach($xml->Cube->Cube->Cube as $rate){
  if ($rate["currency"] == 'WANTED CURRENCY') {
    echo $rate["rate"].' '.$rate["currency"].'<br/>';
  }
}
$xml=simplexml\u加载文件('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');
foreach($xml->Cube->Cube->Cube as$rate){
如果($rate[“currency”]=“通缉货币”){
echo$rate[“rate”]。$rate[“currency”]。
; } }
如果您想使用正则表达式,可以试试这个表达式吗

USD' rate='(.*)'
我喜欢使用此网站来帮助我表达:


在本例中,我使用一个文件获取了xml的内容,将它们粘贴到该站点的框中,并开始使用页面顶部的栏生成表达式。键入时,会自动在下面的框中查看是否有匹配项。

如果要使用正则表达式,可以尝试使用此表达式吗

USD' rate='(.*)'
我喜欢使用此网站来帮助我表达:


在本例中,我使用一个文件获取了xml的内容,将它们粘贴到该站点的框中,并开始使用页面顶部的栏生成表达式。键入时,您会自动在下面的框中查看是否有匹配项。

我对您提供的链接有点困惑。我理解你所说的复制中的内容,但我不明白标志、捕获的分组等是什么意思。哦,粘贴xml后,单击顶部的白色条(在“匹配”下面),然后开始键入表达式。这真的可以帮助你在飞行中想象它。例如,对于您的xml,我输入了USD'rate=',我发现它是有效的。我使用()添加了一个捕获组,并用一个“”将其关闭。这就是你所需要的。现在转到底部,查找“RegExp:”(它是列表中的第一个),在斜杠之间复制所有内容。这是你的函数表达式。嗯,由于某种原因,它在chrome中不起作用。我在firefox中打开它,它开始工作。难怪我这么困惑,真奇怪。我在chrome上使用它。当您在匹配框中键入USD'rate='(.*)时,USD[rate]=>1.2546是否在主区域高亮显示?我准确地输入了您所拥有的内容,但没有突出显示。当我输入USD时,它会突出显示,但当我输入其他内容时,它就会取消突出显示。我对你提供的链接有点困惑。我理解你所说的复制中的内容,但我不明白标志、捕获的分组等是什么意思。哦,粘贴xml后,单击顶部的白色条(在“匹配”下面),然后开始键入表达式。这真的可以帮助你在飞行中想象它。例如,对于您的xml,我输入了USD'rate=',我发现它是有效的。我使用()添加了一个捕获组,并用一个“”将其关闭。这就是你所需要的。现在转到底部,查找“RegExp:”(它是列表中的第一个),在斜杠之间复制所有内容。这是你的函数表达式。嗯,由于某种原因,它在chrome中不起作用。我在firefox中打开它,它开始工作。难怪我这么困惑,真奇怪。我在chrome上使用它。当您在匹配框中键入USD'rate='(.*)时,USD[rate]=>1.2546是否在主区域高亮显示?我准确地输入了您所拥有的内容,但没有突出显示。当我输入USD时,它会突出显示,但当我输入其他内容时,它会取消突出显示。你介意看我的更新吗。我似乎无法让它工作,甚至使用PHP的代码website@user1406951请看这里-第一个答案将解决您的问题:)太好了,这至少帮助了一些人将其输出,但我仍然希望能够为一种货币进行预匹配。谢谢,这比我想象的要容易得多。我倾向于把事情复杂化。我在想我必须对它进行预匹配,但我忘了它只是为了输出而循环,以便它可以作为字符串进行匹配。你介意看看我的更新吗。我似乎无法让它工作,甚至使用PHP的代码website@user1406951请看这里-第一个答案将解决您的问题:)太好了,这至少帮助了一些人将其输出,但我仍然希望能够为一种货币进行预匹配。谢谢,这比我想象的要容易得多。我倾向于把事情复杂化。我想我必须对它进行预匹配,但我忘了它只是为了输出而循环,所以它可以作为字符串进行匹配。