2014-09-21 4 views
0

Я пишу настраиваемую целевую страницу в PHP, анализируя фид XML-продукта. Описания продуктов очень длинные, так как они входят в техническую информацию и технические характеристики, поэтому их нужно сжимать, чтобы читать первые 200 символов. надеюсь, с более подробной ссылкой, когда было достигнуто 200 символов.Как я могу ограничить строку при анализе XML в PHP

код у меня до сих пор:

<?php 

$xml = simplexml_load_file('feed.xml'); 

foreach ($xml->item as $item) { ?> 
<div class="row"> 
<div class="lhs"> 
    <h3><a href="<?php echo $item->link ?>"><?php echo $item->brand.' '.$item->title ?></a></h3> 
    <p class="pri">&pound;<?php echo $item->price ?></p> 
    <p><?php echo $item->description; ?></p> 
    </div> 
    <div class="rhs"> 
     <img src="<?php echo $item->image_link ?>" alt="<?php echo $item->title ?>" height="150" /> 
     </div> 
     </div> 

<?php 
} 
?> 

Пожалуйста, может кто-нибудь посоветовать, что еще мне нужно добавить? Я могу следовать основным шаблонам в PHP, мне просто нужно руководствоваться.

Большое спасибо заранее.

ответ

0

Обратите внимание на строку $ short_description. Отредактировано с использованием базового примера js примера «Показать больше»

<?php 
$xml = simplexml_load_file('feed.xml'); 

foreach ($xml->item as $item) { 
    $short_description = substr($item->description, 0, 200); 
    ?> 
    <div class="row"> 
     <div class="lhs"> 
     <h3><a href="<?php echo $item->link ?>"><?php echo $item->brand . ' ' . $item->title ?></a></h3> 
     <p class="pri">&pound;<?php echo $item->price ?></p> 
     <p id="shown"><?php echo $short_description; ?>... <a href="#" onclick="document.getElementById('hidden').style.display = 'block'; document.getElementById('shown').style.display = 'none'; this.style.display = 'none'; return false;">Show more</a></p> 
     <p id="hidden"><?php echo $item->description; ?></p> 
     </div> 
     <div class="rhs"> 
     <img src="<?php echo $item->image_link ?>" alt="<?php echo $item->title ?>" height="150" /> 
     </div> 
    </div> 

    <?php 
} 
?> 
+0

Спасибо Rikudou. Я не хотел использовать JavaScript, но он отлично работает. На другом примечании, как я могу ограничить количество результатов, например, 10? Или мне нужно запустить другой поток? – debonator

+0

Возможно, было бы лучше начать новый поток, но простым решением было бы добавить $ i = 0; перед выходом. Перед самым концом цикла foreach добавьте $ i ++; а затем помещать где-то внутри цикла это условие: if ($ i === 10) {break; } –

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