functie: XML info

Door Kay Kay, 13 jaar geleden, 2.182x bekeken

Iemand vroeg net naar zo iets op het forum en had nog wat liggen.


Code van het voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    function xmlinfo($str, $row, $limit=null, $attr=NULL)
    {

        if($attr != NULL)
        {

            preg_match_all("|<$row.*$attr=\"(.*)\".*>.*</$row>|U", $str, $xmlinfo);
        }
else{
            preg_match_all("|<$row.*>(.*)</$row>|U", $str, $xmlinfo);
        }

        if($limit != null)
        {

            $xmlinfo = array_slice($xmlinfo[1], 0, $limit);
        }
else{
            $xmlinfo = $xmlinfo[1];
        }

        return $xmlinfo;
    }

    
    $rss = file_get_contents('http://feeds2.feedburner.com/tweakers/mixed');
    echo '<pre>';
    print_r(xmlinfo($rss, 'title'));
    echo '</pre>';
?>

Voorbeeld: http://zooi.brothersofflames.net/xmlinfo_functie.php

Gesponsorde koppelingen

PHP script bestanden

  1. functie-xml-info

 

Er zijn 6 reacties op 'Functie xml info'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Lode
Lode
13 jaar geleden
 
0 +1 -0 -1
Waarom zou je dit met requliere expressies willen doen?
php heeft prima functionaliteiten voor xml als SimpleXml en DomDocument eventueel.

En dan nog zitten een hoop fouten/verbeteringen in!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
function xmlinfo($str, $row, $limit=null, $attr=null){ //NULL = null ?!
    $xmlinfo = array(); //moet gedefineerd zijn, je returned 'm immers!
    if($attr !== null){ //=== of !== null
        //variablen horen buiten quoted strings!

        preg_match_all('|<'.$row.'.*'.$attr.'=\"(.*)\".*>.*</'.$row.'>|U', $str, $xmlinfo);
    }

    else{
        //variablen horen buiten quoted strings!
        preg_match_all('|<'.$row.'.*>(.*)</'.$row.'>|U', $str, $xmlinfo);
    }

    if($limit !== null){  //=== of !== null
        $xmlinfo = array_slice($xmlinfo[1], 0, $limit);
    }

    else{
        $xmlinfo = $xmlinfo[1];
    }

    //tweakers presenteerd ISO-8859-1, utf-8 leest wat beter
    //utf8_en|decode werkt alleen voor ISO-8859-1 overigens!
        //moet je dus eigenlijk detecteren en converten met mb_* of iconv

    return array_map('utf8_encode', $xmlinfo);
}

$rss = file_get_contents('http://feeds2.feedburner.com/tweakers/mixed');
echo '<pre>'.print_r(xmlinfo($rss, 'title'), true).'</pre>'; //kan op 1 regel ?
?>


Regexen kunnen ook zeker nog vele malen efficienter en beter!
Maar ik heb nog andere dingen te doen...

Ik vind het persoonlijk niet echt nuttig!
Kay Kay
Kay Kay
13 jaar geleden
 
0 +1 -0 -1
Over de ingebouwde functionaliteiten was ik niet van op de hoogte.
Over die ik in een string heb gestopt, geef ik je volledig gelijk! Dit is wel slecht en ik weet ook niet waarom ik het daar heb gedaan.

En wat doe ik fout met null?

Waarom omzetten naar utf-8? Ik gebruik voor al mijn websites ISO-8859-1.. leest beter?

Over dat het op 1 regel kan ben ik het mee eens. Ik gebruikte eerst var_export, maar die kan niet op 1 regel. vandaar.
Lode
Lode
13 jaar geleden
 
0 +1 -0 -1
Ik kreeg allemaal vage tekens in mijn browser zonder die utf8 convert.
php en databases kunnen veel beter overweg met utf8 volgens mij.
iso-8859-1 is een behoorlijk antieke charset. Heeft bijvoorbeeld geen € teken.

NULL is de constante van null, ze zijn het zelfde dus, maar waarom gebruik je ze dan door elkaar? En een vergelijking op null doe je met === of !== (3x) net als true en false.

var_export() is weer iets anders...
Kay Kay
Kay Kay
13 jaar geleden
 
0 +1 -0 -1
Raar. De laatste keer dat ik ergens utf8 gebruikte werkten juist die 'rare' tekens niet :o

Tsja, NULL of null of Null.. Soms drukt mijn pink gewoon iets te ver naar onderen..
Dus alleen bij een vergelijking met null of true/false gebruik je ===?

I know
Karl Karl
Karl Karl
13 jaar geleden
 
0 +1 -0 -1
Ik gebruik gewoon een (aantal) var_dump's van een simplexml object.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Frank -
Frank -
13 jaar geleden
 
0 +1 -0 -1
Met XSLT wordt het nog eenvoudiger, heb je in elk geval voor de weergave van de XML geen PHP meer nodig. Althans, niet voor jouw specifieke XML, een generieke parser die de gewenste XML en de gewenste XSLT gaat parsen, is meer dan genoeg. Heeft ook als voordeel dat het dan ook werkt met andere programmeertalen, die kunnen (vrijwel altijd) ook met XML en XSLT uit de voeten.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. functie-xml-info

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.