我試圖讓每個專案都具有相同的 ID,即使它們的日期不同。
例如,我輸入 ID 41,然后它會從具有以下專案的檔案中找到匹配的專案:
<item>
<name>Abc</name>
<id>41:2021-10-12</id>
</item>
<item>
<name>Bca</name>
<id>41:2021-10-13</id>
</item>
<item>
<name>Def</name>
<id>42:2021-10-12</id>
</item>
<item>
<name>Fed</name>
<id>42:2021-10-13</id>
</item>
這是我嘗試過的:
$trainIdDate = $trainId.':/[0-9]{4}-[0-9]{2}-[0-9]{2}/';
if ($xpath->evaluate("count(self::*[id = '$trainIdDate']) > 0", $item)) {
如果我這樣做,它作業正常:
$trainIdDate = $trainId.':2021-10-12';
if ($xpath->evaluate("count(self::*[id = '$trainIdDate']) > 0", $item)) {
uj5u.com熱心網友回復:
XPath 1.0 不支持正則運算式。
使用 XPath 2.0 你可以做到
count(self::*[matches(id, '[0-9]{4}-[0-9]{2}-[0-9]{2}]') > 0
但是 PHP 的默認 XPath 引擎僅支持 1.0。
uj5u.com熱心網友回復:
您可以將 id 視為以火車 ID 開頭的字串,后跟一個冒號。
$trainID = 42;
$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath($document);
$expression = "//item[starts-with(id, '$trainID:')]";
foreach ($xpath->evaluate($expression) as $item) {
var_dump(
[
$xpath->evaluate('string(name)', $item),
$xpath->evaluate('string(id)', $item),
]
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336643.html
上一篇:正則運算式獲取字串的一部分
下一篇:使用正則運算式捕獲德國日期格式
