【发布时间】:2019-03-22 08:16:30
【问题描述】:
我正在从车辆 VIN 解码器中提取和处理数据。它的工作原理是您输入车辆的 VIN 并返回有关该车辆规格的数据。
我在处理引擎数据时遇到了一些问题。每个数据点都与一个 ID 相关联,我使用 foreach 循环提取它。发动机排量与$techData[42] 相关,其中VIN: WAUUL78E38A092113 $techData[42]= "4.2L/254"。我只关心"4.2L" 值。我怎样才能只提取4.2L 并用它创建一个变量然后echo?我需要这个附加代码灵活并适用于我输入的任何 VIN。 techData[42] 可以等于 4.2L、5L、5.5L 等等。任何关于我如何实现这一目标的想法都将不胜感激。谢谢!
这是我的 PHP,它返回所有 $techData[]:
<?php
$xml = file_get_contents('note.xml');
$dom = new DOMDocument();
$dom->loadXML($xml);
foreach ( $dom->getElementsByTagName('technicalSpecification') as $techSpecElement ) {
foreach($techSpecElement->getElementsByTagName('value') as $valueElement) {
foreach($valueElement->getElementsByTagName('styleId') as $styleIdElement) {
// check the value of the styleId here
if (in_array($styleIdElement->nodeValue, [$variable2])) {
// if it matches, get the parent value element's value
$id = $techSpecElement->getElementsByTagName('titleId')->item(0)->nodeValue;
$techData[$id] = $valueElement->getAttribute("value");
}
}
}
}
echo "<b>Displacement:</b> ".$techData[42]."<br>";
?>
这是我从中提取位移数据的 XML:
<technicalSpecification>
<titleId>42</titleId>
<value value="4.2L/254" condition="">
<styleId>292015</styleId>
<styleId>292016</styleId>
</value>
</technicalSpecification>
【问题讨论】:
-
它总是有那个正斜杠吗?如果是这样,您始终可以
explode()该变量并使用第一个值,例如:explode("/",$techData[42])[0]); -
您能否提供一个 XML 示例,因为依赖于特定 VIN 的位置 42 之类的东西并不能满足您的需求(我认为)。
-
@zack6849 我需要与我的数据提供者核实它是否总是有正斜杠。我想假设不只是为了安全,但我可能是错的。
-
@nigelren 我编辑了问题以包含我从中提取的 XML 的摘录。所有位移数据将始终具有
<titleId>42</titleId> -
$variable2是什么?
标签: php string if-statement foreach domdocument