Как я могу наилучшим образом l oop из этого выражения xpath из списка через запятую? - PullRequest
1 голос
/ 22 апреля 2020

У меня есть несколько «ПИН-кодов», как я их назову, которые хранятся в поле ввода в формате через запятую. Поэтому они хранятся в виде строки в формате '1234,5678'.

. Я уже могу заставить xPath отфильтровать файл XML по одному значению, используя это:

xpath("/ReaderDetails/Reader[Pin=1234]")

I пытаюсь найти простой способ взять строку, разделенную запятыми, и интерпретировать ее в выражении xpath, чтобы я мог использовать несколько значений.

Ожидаемый результат будет:

xpath("/ReaderDetails/Reader[Pin='1234' or Pin='5678']")

Это важно, чтобы это могло обрабатывать столько ПИН-кодов, сколько введено в поле ввода.

Пока я могу поместить ПИН-коды в массив, используя array_map('trim', explode(',', get_option('dream_team_readers'))), но не могу понять, как чтобы создать выражение, как указано выше.

1 Ответ

1 голос
/ 22 апреля 2020

Возможно, вы должны быть в состоянии выполнить sh желаемый строковый шаблон, подобный этому @

# to emulate the array of PINS...
$pins=[ 1234,3245,5423,4353,64576,5675,2347,3453 ];


$tmp=[];
foreach( $pins as $pin )$tmp[]=sprintf( 'Pin="%d"', $pin );
$expr=sprintf( '/ReaderDetails/Reader[ %s ]', implode( ' or ', $tmp ) );

Если бы вы напечатали результирующую переменную $expr, вы бы получили:

/ReaderDetails/Reader[ Pin="1234" or Pin="3245" or Pin="5423" or Pin="4353" or Pin="64576" or Pin="5675" or Pin="2347" or Pin="3453" ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...