2017-02-15 6 views
0

Я ищу, чтобы удалить текст из описания RSS, которое не входит в элемент тега (т. Е. Сильный, p, span и т. Д.). Я смог удалить сильный элемент, но я не могу настроить таргетинг на текст «Местоположение», поскольку он не находится в теге.Удалить текст из описания RSS, который не входит в элемент тега

Чтобы уточнить, я пытаюсь удалить

21.671N 158.117W or 5 nautical miles N of search location of 21.5928N 158.1034W. 

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

Ниже мой код ...

<?php 
    $rss = simplexml_load_file('http://www.ndbc.noaa.gov/rss/ndbc_obs_search.php?lat=21.5928&lon=-158.1034&radius=100'); 

    $i = 0; 
    foreach($rss->channel->item as $item) { 
    echo "<p>" . $item->description . "</p>"; 
    echo '<h2><a style="font-size:12px; text-decoration:none;" href="'. $item-  >link .'">' . $item->title . "</a></h2>"; 
    $i++; 
    if ($i >= 1){ 
     break; 
    } 
    } 
?> 
<script> 
    document.getElementsByTagName("strong")[1].setAttribute("hidden", true); 
</script> 

Заранее спасибо за любую помощь.

ответ

0

Кажется, что этот канал всегда имеет элемент «местоположение» в качестве второй строки; вы можете разбить на <br />, удалить вторую строку, а затем снова объединиться с <br />.

например.

foreach($rss->channel->item as $item) { 
    // Split on <br /> 
    $descriptionBits = explode("<br />", $item->description); 
    // Remove the location line 
    unset($descriptionBits[1]); 
    // Glue the bits back together again 
    $descriptionString = implode("<br />", $descriptionBits); 

    // Then print it out 
    echo "<p>" . $descriptionString . "</p>"; 
+0

Awesome! Спасибо за простое решение и четкие комментарии. –

Смежные вопросы