PHP - анализирует данные c с использованием simplexml - PullRequest
1 голос
/ 18 января 2020

У меня есть файл xml, как показано ниже. Я хотел бы отображать только данные для языка en в зависимости от языка сайта

Мой php код теперь отображает данные для всех языков

<?php
    $xml = simplexml_load_file('https:/dffsfdsdf.en/export.php');
    foreach ($xml->AD as $foo)
    { ?>

    <div class="item">
        <a href="<?php echo esc_url( home_url( '/' ) ); ?>/?ID=<?php echo $foo->ID?>" class="title">
            <div class="row">
            <div class="col-6"><h3><?php echo $foo->JOB_TITLE?></h3></div>
            <div class="col-3 text-center"><?php echo $foo->CITY?></div>
            <div class="col-3 text-right"><span class="see"><span class="close"><?php _e('more', ''); ?></span></span></div>
        </div>
        </a>
    </div>
    <?php }
?>

мой простой xml

<AD UID="MzMwODFfMF8yNTM4_0">
 <ID>MzMwOTJfMF8yNTM4_0</ID>
 <JOB_TITLE>...</JOB_TITLE>
 <CATEGORY>0</CATEGORY>
 <CATEGORY2>0</CATEGORY2>
 <EXP_DATE>2020-02-17</EXP_DATE>
 <START_DATE>2020-01-18</START_DATE>
 <COMPANY>...</COMPANY>
 <REGION_ID>7</REGION_ID>
 <CITY>...</CITY>
 <APPLY_LINK>...</APPLY_LINK>
 <REF_NO>...</REF_NO>
 <LOGO>...</LOGO>
 <FULL_HTML>...</FULL_HTML>
 <LANGUAGE>
  <![CDATA[ EN ]]>
 </LANGUAGE>
</AD>

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Вы можете использовать оператор if для проверки EN и использовать LIBXML_NOCDATA, чтобы превратить часть CDATA в строку. Тогда вы можете использовать обрезку для сравнения строк.

Обратите внимание, что в xml отсутствует < вверху.

$xml = simplexml_load_file(
    'https:/dffsfdsdf.en/export.php', 
    'SimpleXMLElement', 
    LIBXML_NOCDATA
);

foreach ($xml->AD as $foo) {
    if (trim($foo->LANGUAGE) === "EN") {
        // ... your code
    }
}
0 голосов
/ 18 января 2020

Вы можете использовать XPath для поиска, где элемент <LANGUAGE> содержит указанный c язык. Это жестко закодировано с EN, но идея та же самая ...

foreach ($xml->xpath('//AD[normalize-space(LANGUAGE)="EN"]') as $foo)

Я использовал normalize-space(LANGUAGE), так как на всякий случай удаляется любое окружающее пространство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...