2 värden i samma foreach loop

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Nuppan



Medlem i: 1153 dagar

Status: Offline



#741042
Inlägg Skrivet: 2016-09-27 12:37      Ämne: 2 värden i samma foreach loop Citera

Hur gör man för att slå ihop dessa till en loop? Får inte till det alls.

KOD:
1:
 
2:
$html = file_get_html('http://www.sida.se/video');
3:
$title_div  = $html->find('div[class="video-item__title"]');
4:
$video_div  = $html->find('div[class="video-list-solid__item"]');
5:
 
6:
foreach($title_div as $title)
7:
{
8:
echo $title;
9:
}
10:
 
11:
foreach($video_div as $video)
12:
{
13:
echo $video;
14:
}
15:
 


Senast ändrad av Nuppan den 2016-09-27 16:39, ändrad totalt 1 gång
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 4857 dagar
Från: Uppsala, bor i Göteborg
Status: Online



#741043
Inlägg Skrivet: 2016-09-27 12:44      Ämne: Citera

Sätt en vettigare rubrik på tråden.
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
harald_b
Moderator



Medlem i: 4598 dagar
Från: Tavesta
Status: Offline



#741046
Inlägg Skrivet: 2016-09-27 20:35      Ämne: Citera

Vad jag kan se så kan du lösa problemet på två sätt.
array_merge() kan användas för att slå ihop två arrayer:
PHP:
1:
 foreach(array_merge($title_div$video_div) as $text) {
2:
echo $text;
3:
Den metoden kan få problem ifall nycklarna i arrayerna är i form av strängar.


Den andra lösningen är att söka efter båda typerna av divar i samma sökning:
PHP:
1:
 $divar  = $html->find('div[class="video-list-solid__item"],div[class="video-item__title"]');  

Jag är inte helt hemma på det här html-verktyget du använder, men om jag förstått saken rätt så kan man bygga ihop flera sökuttryck med kommatecken mellan
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Nuppan



Medlem i: 1153 dagar

Status: Offline



#741048
Inlägg Skrivet: 2016-09-27 23:25      Ämne: re Citera

Tack. Denna fungerar. Smile

KOD:
1:
 
2:
$divar  = $html->find('div[class="video-list-solid__item"],div[class="video-item__title"]');
3:
 


Kan på nått smart sätt endast läsa länken i text i denna div? Den hämtar allt nu och skapar en länk.
KOD:
1:
 
2:
div[class="video-item__title"]
3:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4598 dagar
Från: Tavesta
Status: Offline



#741050
Inlägg Skrivet: 2016-09-28 00:03      Ämne: Citera

Det kan man säkert, men jag tror du måste förtydliga din fråga lite grand, och kanske visa med ett konkret exempel vad i html-koden du vill få ut.

Är det en <a> länk det handlar om? Är det texten man klickar på du vill få ut, eller url:en?

Testa med det här:
KOD:
1:
div[class="video-item__title"]/a

eller
KOD:
1:
div[class="video-item__title"]//a
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Nuppan



Medlem i: 1153 dagar

Status: Offline



#741053
Inlägg Skrivet: 2016-09-28 09:51      Ämne: re Citera

Jag försöker hämta rubrik och url till filmklipp från fotbollskanalen. Eftersom länken inte är komplett tänkte jag hämta den som tex om det går och skapa rätt länk. Problemet är att diven för länken innehåller fler divar så jag får med allt och det skapas en länk av allt utom rubriken.

Ett klipp ser ut enligt följande:

KOD:
1:
 
2:
<div class="video-list-solid__item">
3:
    <a href="/video/3540212/handelserikt-i-norrkoping---berntsen-gor-3-1-for-djurgarden/">
4:
        <div class="video-item__image">
5:
            <span class="video-item__icon-play icon-play"></span>
6:
            <img alt="" class="lazy" data-original="https://img1.tv4cdn.se/convert/resize/_width_x_height_/shape/trimcut/source/http%3a%2f%2fprima.tv4play.se%2fmultimedia%2fvman%2fVMan-P354%2fVMan-P3540212.png" src="/StaticHybrid/Images/empty.png" />
7:
        </div>
8:
        <div class="video-item__info">
9:
           
10:
                <div class="video-item__duration">1:06</div>
11:
           
12:
            <div class="video-item__section">ALLSVENSKAN</div>
13:
            <div class="video-item__title">Händelserikt i Norrköping - Berntsen gör 3-1 för Djurgården</div>
14:
            <div class="video-item__box">
15:
                <div class="icon-box">
16:
                    <span class="icon-clock"></span>
17:
                    <span class="published">1d</span>
18:
                </div>
19:
 


Efter loopen vill jag kunna få fram varje divs innehåll var för sig och då endast länken till klippet i <div class="video-list-solid__item">.

Hoppas jag fått fram det jag söker.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4598 dagar
Från: Tavesta
Status: Offline



#741054
Inlägg Skrivet: 2016-09-28 12:09      Ämne: Citera

Jag har inte helt koll på vad den här klassen du använder kan och inte kan, men utifrån manualen här bode du kunna göra något i den här stilen:

PHP:
1:
 $html file_get_html('http://www.sida.se/video');
2:
 
3:
 
4:
foreach( $html->find('div.video-list-solid__item') as $div) {
5:
  $href $div->find('a',0)->href;
6:
  $title $div->find('div.video-item__title',0)->plaintext;
7:
  //...
8:
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Nuppan



Medlem i: 1153 dagar

Status: Offline



#741055
Inlägget är accepterad som det rätta svaret Skrivet: 2016-09-28 12:49      Ämne: re Citera

Där satt den. Tack så hemskt mycket Smile
KOD:
1:
 
2:
<?php
3:
include_once('php_dom_function.php');
4:
 
5:
$html = file_get_html('http://www.fotbollskanalen.se/video/');
6:
 
7:
foreach( $html->find('div.video-list-solid__item') as $div)
8:
{
9:
  $video = $div->find('a',0)->href;
10:
  $title = $div->find('div.video-item__title',0)->plaintext;
11:
 
12:
  $url = "http://www.fotbollskanalen.se$video";
13:
 
14:
  echo "<a href='$url'>$title</a><br>";
15:
}
16:
?>
17:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4598 dagar
Från: Tavesta
Status: Offline



#741056
Inlägg Skrivet: 2016-09-28 13:45      Ämne: Citera

När du stoppar in data i html-kod bör du dra det genom htmlspecialchars().
PHP:
14:
 echo '<a href="'htmlspecialchars($url), '">'htmlspecialchars($title),'</a><br>'

I annat fall kan i värsta fall fotbollskanalen.se hacka din sida genom att t.ex peta in javascript du inte förberett dig på.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic