Значения узла XML и дочернего узла для массива переполнения стека

Я пытаюсь сохранить значения узлов в массив. Это структура XML:

  <wildcards>
<conference id="1">
<seeds>
<seed divId="1">10,7,17</seed>
<seed divId="2">8,5,3</seed>
</seeds>
<wild>2,4</wild>
<elimination>11,6,14,1,13,12,20,15</elimination>
</conference>
</wildcards>

XML-файл можно найти здесь
Я хочу связать значения узлов конференций 1 с ключом массива, указав, какое место они занимают в подстановочных знаках. Вот мой код:

$xmlDoc = new DOMDocument();
$xmlDoc->load('http://www.tsn.ca/datafiles/XML/NHL/standings.xml');

$searchNode = $xmlDoc->getElementsByTagName('wildcards');
foreach ($searchNode as $node) {
$conference1 = $node->getElementsByTagName('conference');
$conference1 = $conference1->item(0)->nodeValue;
}

echo $conference1;
//  $conference1 = str_replace(" ",",",$conference1);
$conference1Array =  explode(',', $conference1);
$conference1ArrayLength = count($conference1Array) ;

for ($i = 1; $i < $conference1ArrayLength; $i++) {
echo $i.": ".$conference1Array[$i-1];
echo "<br/>";
}

Если вы идете на этот сайт, Вы можете увидеть мой текущий результат. Я попытался заменить строку пробелами на «,», чтобы получить правильный массив, но это не сработало.

Результат конференции1: 10,7,17 8,5,3 2,4 11,6,14,1,13,12,20,15, Даже если есть пробелы, замена не сработала.

Мне нужно иметь запятую после 17, 3 и 4. Идея состоит в том, чтобы вставить ключ для идентификатора команды в столбец в моей базе данных с именем seed, Затем я могу использовать PHP, чтобы определить, какие числа связаны с каждым делением / подстановочным знаком для вывода таблицы. Вот что я имею в виду под связью ключа и идентификатора команды / значений узла:

Идентификатор команды: 10 -> 1 (первый в 1-м дивизионе)
Team Id: 7 -> 2 (второй в 1-м дивизионе)
Team Id: 17 -> 3 (третий в 1-м дивизионе)
Team Id: 8 -> 4 (1-й в 2-м дивизионе)
Team Id: 5 -> 5 (2-й в 2-м дивизионе)
Team Id: 3 -> 6 (3-й в 3-м дивизионе)
Team Id: 2 -> 7 (подстановочный знак 1)
Идентификатор команды: 4 -> 8 (подстановочный знак 2)
Team Id: все остальное (исключено)

Я пытался получить значения узлов отдельно, используя код по этой ссылке, но я не мог понять, как заставить его работать в моей ситуации. Кстати, у меня больше нет попыток написать код для этого.

Изменить: я посмотрел на предоставленные ссылки и придумал это:

$searchNode = $xmlDoc->getElementsByTagName('wildcards');
$divData = array();
foreach($searchNode as $node){
foreach($node->childNodes as $child) {
foreach($child->childNodes as $secondChild) {
foreach($secondChild->childNodes as $thirdChild) {
$divData[] = array($thirdChild->nodeName => $thirdChild->nodeValue);
}
}
}
}

Это мой новый вывод

0

Решение

Результат конференции1: 10,7,17 ​​8,5,3 2,4 11,6,14,1,13,12,20,15. Даже если есть пробелы, замена не сработала.

Вы почти там, используйте следующий код для вставки запятых:

$conference1 = '10,7,17 8,5,3 2,4 11,6,14,1,13,12,20,15 ';
$conference1 = str_replace(" ",",",trim($conference1));

ОБНОВЛЕНИЕ 1

Попробуйте заменить любые символы, которые не являются запятыми или [0-9]

$new_string = preg_replace('/[^0-9,]+/u', ",", $your_string);

ОБНОВЛЕНИЕ 2

Чтобы исправить лишние запятые в начале и в конце, сделайте еще один обрез $new_string = trim($your_string,",");

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector