Hoi allemaal

ik heb een veld in een xml feed waar de volgende info instaat
<description>Start Van De Motor Set USB ID: 6F22683C19 Time: 30-10-2020 21:18:40 CET Engine Hours: 3083:27:00 </description>


nou wil ik het in de volgende stukken delen
tot aan Set USB (dit kan variable zijn)
gedeelte van SET USB tot aan Time
Gedeelte Time tot aan Engine
engine gedeelte


nou heb ik al geprobeerd dit met de volgende code te doen

$test01 = $item->description;
$result = explode("SET", $test01);
$result2 = explode("Time:", $test01);
$result3 = explode("Engine", $test01);
Maar dan krijg ik lege array's

waarschijnlijk gebruik ik ook niet de goede functie hiervoor maar zou niet weten welke ik het beste ervoor kan gebruiken

iemand die me beetje op weg kan helpen?
Echo eens $xml.
Dan weet je wat er in zit.
$url = 'https://www.site.com/user_rss_feed.php';;

het zit hem in $item = simplexml_load_string( $url );

want als ik hem echo dan krijg ik de link te zien...
simplexml_load_string moet iets zijn die een bestand kan lezen niet string?
Gebruik eens simplexml_load_file.
Of gebruik cURL wat flexibeler is.
ik heb nu dit
$url = '';

$context = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$rss = Feed::loadRss($url, $user, $pass);

$xml = file_get_contents($url, false, $context);

$item = simplexml_load_file( $xml );




ik ga ff testen met curl

[size=xsmall]Toevoeging op 02/11/2020 10:42:12:[/size]

Warning: simplexml_load_file(https://www.site.com/user_rss_feed.php): failed to open stream: HTTP request failed! HTTP/1.0 401 Unknown infeed.php on line 13
Een 401 header. Je moet je op een bepaalde manier authenticeren via HTTP Authenticatie.
zie onderste post
Echo eens wat er in $data zit?
zie onderste post
Geef even de output van $data. Dit moet een XML-feed zijn. Verder is het ook ongewenst om halverwege een bericht weg te editen.
oke ben al aardig op weg nu ik heb nu dat ik andere waardes krijg van de xml

ik krijg nu deze output :
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [version] => 2.0
        )

    [channel] => SimpleXMLElement Object
        (
            [title] => site
            [link] => http://www.site.com/
            [description] => site Events RSS Feed
            [pubDate] => Mon, 02 Nov 2020 10:36:17 +0000
            [lastBuildDate] => Mon, 02 Nov 2020 10:36:17 +0000
            [ttl] => 5
            [item] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [title] => 150-006 XAS: 150-006 XAS - Fuel Monitor Event End Fill 48%
                            [description] => Fuel Monitor Event End Fill 48%
		 
		
							Set USB ID: 6F22683C19
		
							Time: 02-11-2020 11:29:05 CET
		
							Engine Hours: 3137:24:00
		
                            [pubDate] => Mon, 02 Nov 2020 10:29:05 +0000
                            [enclosure] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [url] => http://www.site.com/style/default/logo.png
                                            [length] => 1465
                                            [type] => image/png
                                        )

                                )

                            [alertColour] => http://www.site.com/style/default/logo.png
                        )

                    [1] => SimpleXMLElement Object
                        (
                            [title] => 150-006 XAS: 150-006 XAS - Fuel Monitor Event Start Fill 47%
                            [description] => Fuel Monitor Event Start Fill 47%
		 
		
							Set USB ID: 6F22683C19
		
							Time: 02-11-2020 11:29:04 CET
		
							Engine Hours: 3137:24:00
		
                            [pubDate] => Mon, 02 Nov 2020 10:29:04 +0000
                            [enclosure] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [url] => http://www.site.com/style/default/logo.png
                                            [length] => 1465
                                            [type] => image/png
                                        )

                                )

                            [alertColour] => http://www.site.com/style/default/logo.png
                        )

                   


met deze code

<?php
include_once "src/Feed.php";
$user = "user";
$pass = "pass";
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "user";


$usernamehttp = 'user';
$passwordhttp = 'pass';

$url = "https://www.site.com/user_rss_feed.php"; 

$context = stream_context_create(array(
    'http' => array(
        'header'  => "Authorization: Basic " . base64_encode("$usernamehttp:$passwordhttp")
    )
));
$data = file_get_contents($url, false, $context);
$data = simplexml_load_string( $data );

foreach ($data->channel as $item) {				
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
$check_timestamp = ("SELECT * FROM 'feed' WHERE timestamp = '" . (int)$item->timestamp . "' LIMIT 1");

echo "<pre>";
print_r($data);
echo "</pre>";
//$check_timestamp = SELECT * FROM feed WHERE timestamp =''. $item->timestamp. '' LIMIT 1;
if ($check_timestamp < 1) {
echo "er is al een timestamp aanwezig<br />";

}
else  {
//echo "er is nog geen timestamp aanwezig<br />";
$value = $item->description;
preg_match('/^(.*) Set USB (.*) Time: (.*) Engine (.*)$/i', $value, $match);


  $test1 = $match[1];
  $test2 = $match[2];
  $test3 = $match[3];
  $test4 = $match[4];

$sql = "INSERT INTO feed (timestamp, title, description, match1, match2, match3, match4)
VALUES ('". $item->timestamp ."', '". $item->title ."', '". $item->description ."', '". $test1 ."', '". $test2 ."', '". $test3 ."', '". $test4 ."')";
if ($conn->query($sql) === TRUE) {
  echo "New record created successfully<br />";
} 
else {
  echo "Error: " . $sql . "<br>" . $conn->error;
  $conn->close();

  }
}
}

$item = simplexml_load_string( $data );
if( preg_match('/^(.*) Set USB ID: (.*) Time: (.*) Engine Hours: (.*)$/', $item->description, $match ) )
{
    echo '<pre>' . print_r( $match, TRUE ) . '</pre>';
}
foreach ( $match as $key => $value )
{
    echo $key . ' = ' . $value . '<br />';
}

$test = preg_match('/^(.*) Set USB (.*) Time: (.*) Engine (.*)$/', $item->description, $match ) ;
// alleen om te testen
echo '<pre>' . print_r( $test, TRUE ) . '</pre>';
echo '<pre>' . print_r( $match, TRUE ) . '</pre>';

$test1 = $match[1];
$test2 = $match[2];
$test3 = $match[3];
$test4 = $match[4];

echo '<p>' .
$test1 . '<br >' .
$test2 . '<br />' .
$test3 . '<br />' .
$test4 .
'</p>';
?>


nou is alleen het "probleem"dat ik keek in de database of timestamp bestond en zo wist dat er al een record was..
nu krijg ik die niet meer mee...

daarentegen krijg ik wel pubdate.

maar moet ik die dan eerst omzetten om daar een goede datum van te krijgen ?



[size=xsmall]Toevoeging op 02/11/2020 11:45:37:[/size]

- Ariën - op 02/11/2020 11:40:45

Geef even de output van $data. Dit moet een XML-feed zijn. Verder is het ook ongewenst om halverwege een bericht weg te editen.


sorry ik wilde het overzichtelijk houden met welke code er nu is, daarom had ik een nieuwe post gemaakt met wat ik nu heb totaal en de output zoals hij nu is ;-) zal het niet meer doen

Reageren