Pagina 1 van 3

natsort van de output van de ereg

Geplaatst: 12 feb 2005, 00:47
door Dennis
Hoe kan ik de natsort() functie toepassen als ik in het onderstaande script de wil sorteren op waarde $txt0[1]
Ik krijg het niet voor elkaar, wie kan me (opweg) helpen

het gaat er dus om dat hij sorteert op wegnummer zie link
http://localhost/vinfo/
Hier onder staat de simpele uitvoering van het script, dus was je op de site ziet is wat uitgebreider dan hieronder.

Code: Selecteer alles

<?php  

    $xmlfile = fopen("news.xml", "r");  
    if(!$xmlfile)die("cannot open the xml file");  
    $readfile = fread($xmlfile ,400000);  
    $searchfile = eregi("<ActivateTime>(.*)</Text>", $readfile ,$arrayreg);  

    if ($arrayreg[0] == FALSE)  
      {  
      $count = 0;  
      }  
   else  
      {  
      $filechunks = explode("<Information>", $arrayreg[0]);   
      $count = sizeof($filechunks);  
      }   

if ($count > 0)  
      {  
      for ($a = 0; $a < sizeof($filechunks); $a++)  
         {  
         ereg("<Text>(.*)</Text>",$filechunks[$a], $txt0);  
         }  
      } 


    echo "<table border='0'width='100%' bgcolor='#FFFFFF'>";  
echo '<tr>'; 
echo "<td><b>Aantal meldingen:  $count</b></td>"; 
echo '<td align="center"><h2>Verkeersinformatie</h2></td>'; 
echo "<td align='right'><font size='1'><img border='0' src='none.gif' alt='Verkeersinfo><br/ >Overzicht gegenereerd: xxxxxx</font></td>"; 
echo '</tr>'; 
echo '</table>'; 

    echo "<table border='0' cellspacing='0' width='100%' bgcolor='#FFFFFF'>"; 

    for($i=0 ; $i<=$count-1 ;$i++)  
    { 
    ereg("<Class>0</Class><Text>(.*)</Text></Data><Data><Class>1</Class>",$filechunks[$i], $txt0);  
    ereg("<Class>1</Class><Text>(.*)</Text></Data><Data><Class>2</Class>",$filechunks[$i], $txt1);  
    ereg("<Class>2</Class><Text>(.*)</Text></Data><Data><Class>3</Class>",$filechunks[$i], $txt2);  
    ereg("<CreateTime>(.*)</CreateTime>",$filechunks[$i], $extrainfo);  


echo "<tr>";  
echo "<td valign='top'><font color='#FF0000'><b>&nbsp;"; 
echo $txt0[1]; 
echo " </b></font></td><td><font size='2' color='#0099ff'>"; 
echo $txt1[1]; 
echo "<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: $extrainfo[1] '></font></br ><font size='2' >";  
echo $txt2[1]; 
echo "</font></br ></br ></td></tr>";  
    }  
         echo "</table>";  
?>    
Hier staat het XML bestand wat ik inlees: http://localhost/test/xml/news.xml

Geplaatst: 12 feb 2005, 00:54
door mosymuis
Waar komt $arrayreg vandaan?

Geplaatst: 12 feb 2005, 01:12
door Dennis
mosymuis schreef:Waar komt $arrayreg vandaan?
Dat stond al in het basis script wat ik van het net haalde

Code: Selecteer alles

    <?php 
    $xmlfile = fopen("http://www.mywebresources.co.uk/php/myscripting.rss", "r"); 
    if(!$xmlfile)die("cannot open the xml file"); 
    $readfile = fread($xmlfile ,40000); 
    $searchfile = eregi("<item>(.*)</item>", $readfile ,$arrayreg); 
    $filechunks = explode("<item>", $arrayreg[0]); 
    $count = count($filechunks); 
    echo "<table border='1'>"; 
    echo "<th colspan='2'>latest news</th>"; 
    for($i=1 ; $i<=$count-1 ;$i++) 
    { 
    ereg("<title>(.*)</title>",$filechunks[$i], $title); 
    ereg("<link>(.*)</link>",$filechunks[$i], $links); 
    echo "<tr><td>"; 
    echo $title[1]; 
    echo "</td><td>"; 
    echo "<a href ='$links[1]'\>$links[1]</a>"; 
    echo "</td></tr>"; 
    } 
    echo "</table>"; 
    ?> 

Geplaatst: 12 feb 2005, 02:02
door mosymuis
Eh, ja, leuk, maar ik zie nog steeds niet waar dat ding dan gedeclareerd wordt. Of mis ik iets?

Geplaatst: 12 feb 2005, 03:10
door Dennis
mosymuis schreef:Eh, ja, leuk, maar ik zie nog steeds niet waar dat ding dan gedeclareerd wordt. Of mis ik iets?
Dat werkt iig goed zal wel de waarde krijgen door: $searchfile = eregi("<item>(.*)</item>", $readfile ,$arrayreg);

Denk ik

Is dat van belang voor mijn vraag?

Geplaatst: 12 feb 2005, 04:23
door mosymuis
DAMnet schreef:zal wel de waarde krijgen door
..
Jep, heb nog nooit eerder met ereg functies gewerkt, de derde parameter is de array die gevuld wordt met de matches die voldoen aan het patroon. Dat moest ik inderdaad even weten, dit principe wordt meerdere keren in het script gebruikt.

Ik zou het als volgt doen, niet getest, maar werkt vast. Ik denk dat je wel ziet hoe ik het gedaan heb;

Code: Selecteer alles

<?php 

$xmlfile = fopen("news.xml", "r");
if( !$xmlfile )
{
	die("cannot open the xml file");
}
$readfile = fread($xmlfile ,400000); 
$searchfile = eregi("<ActivateTime>(.*)</Text>", $readfile ,$arrayreg);

if ($arrayreg[0] == FALSE)
{ 
	$count = 0; 
} 
else 
{ 
	$filechunks = explode("<Information>", $arrayreg[0]);   
	$count = sizeof($filechunks); 
}   

if ($count > 0) 
{ 
	for ( $a = 0; $a < sizeof($filechunks); $a++ ) 
	{ 
		ereg("<Text>(.*)</Text>",$filechunks[$a], $txt0); 
	}
}


echo "<table border='0'width='100%' bgcolor='#FFFFFF'>"; 
echo '<tr>';
echo "<td><b>Aantal meldingen:  $count</b></td>";
echo '<td align="center"><h2>Verkeersinformatie</h2></td>';
echo "<td align='right'><font size='1'><img border='0' src='damnet.gif' alt='Verkeersinfo powered by DAMnet'><br/ >Overzicht gegenereerd: xxxxxx</font></td>";
echo '</tr>';
echo '</table>';

echo "<table border='0' cellspacing='0' width='100%' bgcolor='#FFFFFF'>";

$files = array();
for( $i = 0; $i <= $count-1; $i++ ) 
{
	ereg("<Class>0</Class><Text>(.*)</Text></Data><Data><Class>1</Class>",$filechunks[$i], $txt0); 
	ereg("<Class>1</Class><Text>(.*)</Text></Data><Data><Class>2</Class>",$filechunks[$i], $txt1); 
	ereg("<Class>2</Class><Text>(.*)</Text></Data><Data><Class>3</Class>",$filechunks[$i], $txt2); 
	ereg("<CreateTime>(.*)</CreateTime>",$filechunks[$i], $extrainfo);
	
	$files[$txt0[1]][] = array('loc' => $txt0[1], 'desc' => $txt1[1], 'info' => $txt2[1]);
}

natsort(files);

foreach ( $files AS $file )
{
	for( $i = 0; $i < $file; $i++ ) 
	{
		echo "<tr>"; 
		echo "<td valign='top'><font color='#FF0000'><b>&nbsp;";
		echo $file[$i]['loc'];
		echo " </b></font></td><td><font size='2' color='#0099ff'>";
		echo $file[$i]['desc'];
		echo "<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: $extrainfo[1] '></font></br ><font size='2' >"; 
		echo $file[$i]['info'];
		echo "</font></br ></br ></td></tr>"; 
	}
}
echo "</table>";

?>

Geplaatst: 12 feb 2005, 22:03
door Dennis
Ik heb natsort(files); veranderd naar natsort($files);

Dan gaat hij 30 sec "denken" en timed dus out..

Echoëd heel veel keer: Notice: Array to string conversion in E:\html\test\index.php on line 51

En deze melding: Notice: Undefined offset: 31415 in E:\html\test\index.php on line 59 op de plaast waar dit zou komen $file[$i]['loc'];

Hij geeft op de plek van alle outputs een Undefined offset error

Geplaatst: 12 feb 2005, 22:31
door mosymuis
DAMnet schreef:Echoëd heel veel keer: Notice: Array to string conversion in E:\html\test\index.php on line 51
Is dat de natsort() regel? Zo ja, plaats dan eens een var_dump() erboven met $files, om te kijken wat het is.

Geplaatst: 12 feb 2005, 22:53
door Dennis
result:

Code: Selecteer alles

array(18) { ["A12"]=> array(6) { [0]=> array(3) { ["loc"]=> string(3) "A12" ["desc"]=> string(25) "Utrecht richting Den Haag" ["info"]=> string(104) "Tussen afslag Reeuwijk en afslag Gouda 4 km Langzaam rijdend verkeer als gevolg van kijkers naar ongeval" } [1]=> array(3) { ["loc"]=> string(3) "A12" ["desc"]=> string(25) "Den Haag richting Utrecht" ["info"]=> string(74) "Tussen afslag Gouda en afslag Reeuwijk Drie rijstroken afgesloten, Ongeval" } [2]=> array(3) { ["loc"]=> string(3) "A12" ["desc"]=> string(25) "Den Haag richting Utrecht" ["info"]=> string(91) "Tussen afslag Zoetermeer en afslag Reeuwijk 12 km Stilstaand verkeer als gevolg van ongeval" } [3]=> array(3) { ["loc"]=> string(3) "A12" ["desc"]=> string(26) "Arnhem richting Oberhausen" ["info"]=> string(69) "Tussen afslag Duiven en afslag Zevenaar 2 km Langzaam rijdend verkeer" } [4]=> array(3) { ["loc"]=> string(3) "A12" ["desc"]=> string(25) "Utrecht richting Den Haag" ["info"]=> string(74) "Tussen afslag De Meern en afslag Nieuwerbrug 4 km Langzaam rijdend verkeer" } [5]=> array(3) { ["loc"]=> string(3) "A12" ["desc"]=> string(24) "Den Haag richting Arnhem" ["info"]=> string(73) "Tussen knooppunt Oudenrijn en afslag Bunnik 6 km Langzaam rijdend verkeer" } } ["A13"]=> array(1) { [0]=> array(3) { ["loc"]=> string(3) "A13" ["desc"]=> string(27) "Rijswijk richting Rotterdam" ["info"]=> string(86) "Tussen afslag Delft-Noord en knooppunt Kleinpolderplein 10 km Langzaam rijdend verkeer" } } ["A15"]=> array(2) { [0]=> array(3) { ["loc"]=> string(3) "A15" ["desc"]=> string(30) "Maasvlakte richting Ridderkerk" ["info"]=> string(66) "Tussen Brielle en afslag Spijkenisse 8 km Langzaam rijdend verkeer" } [1]=> array(3) { ["loc"]=> string(3) "A15" ["desc"]=> string(29) "Ridderkerk richting Rozenburg" ["info"]=> string(98) "Tussen afslag Botlekbrug (gevaarlijke stoffen) en afslag Spijkenisse 2 km Langzaam rijdend verkeer" } } ["A16"]=> array(1) { [0]=> array(3) { ["loc"]=> string(3) "A16" ["desc"]=> string(40) "Ring Rotterdam: Breda richting Rotterdam" ["info"]=> string(91) "Tussen knooppunt Ridderkerk-Noord en knooppunt Terbregseplein 3 km Langzaam rijdend verkeer" } } ["A9"]=> array(3) { [0]=> array(3) { ["loc"]=> string(2) "A9" ["desc"]=> string(44) "Gaasperdammerweg: Amstelveen richting Diemen" ["info"]=> string(68) "Tussen afslag Weesp en driehoek Diemen 2 km Langzaam rijdend verkeer" } [1]=> array(3) { ["loc"]=> string(2) "A9" ["desc"]=> string(26) "Amstelveen richting Diemen" ["info"]=> string(92) "Tussen afslag Ouderkerk aan de Amstel en knooppunt Holendrecht 2 km Langzaam rijdend verkeer" } [2]=> array(3) { ["loc"]
ect.........

Geplaatst: 12 feb 2005, 22:56
door mosymuis
Kopiëer het eens uit de bron ipv van je scherm? ;)

Geplaatst: 12 feb 2005, 23:20
door Dennis
mosymuis schreef:Kopiëer het eens uit de bron ipv van je scherm? ;)
Ja ben bezig, maar de PC loopt "vast" het geheugen loopt vol van de test PC :(

Geplaatst: 12 feb 2005, 23:54
door Dennis

Code: Selecteer alles

<table border='0'width='100%' bgcolor='#FFFFFF'><tr><td><b>Aantal meldingen: 40</b></td><td align="center"><h2>Verkeersinformatie</h2></td><td align='right'><font size='1'><img border='0' src='none.gif' alt='Verkeersinfo'><br/ >Overzicht gegenereerd: xxxxxx</font></td></tr></table><table border='0' cellspacing='0' width='100%' bgcolor='#FFFFFF'><br />
<b>Notice</b>:  Array to string conversion in <b>E:\html\test\index.php</b> on line <b>52</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>E:\html\test\index.php</b> on line <b>52</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>E:\html\test\index.php</b> on line <b>52</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>E:\html\test\index.php</b> on line <b>52</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>E:\html\test\index.php</b> on line <b>52</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>E:\html\test\index.php</b> on line <b>52</b><br />
<br />
<b>Notice</b>:  Array to string conversion in <b>E:\html\test\index.php</b> on line <b>52</b><br />
<br />
ect..............


.................

Code: Selecteer alles

 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Notice</b>:  Undefined offset:  82752 in <b>E:\html\test\index.php</b> on line <b>63</b><br />
<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: 2005-01-25T15:32:00 '></font></br ><font size='2' ><br />
<b>Notice</b>:  Undefined offset:  82752 in <b>E:\html\test\index.php</b> on line <b>65</b><br />
</font></br ></br ></td></tr><tr><td valign='top'><font color='#FF0000'><b>&nbsp;<br />
<b>Notice</b>:  Undefined offset:  82753 in <b>E:\html\test\index.php</b> on line <b>61</b><br />
 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Notice</b>:  Undefined offset:  82753 in <b>E:\html\test\index.php</b> on line <b>63</b><br />
<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: 2005-01-25T15:32:00 '></font></br ><font size='2' ><br />
<b>Notice</b>:  Undefined offset:  82753 in <b>E:\html\test\index.php</b> on line <b>65</b><br />
</font></br ></br ></td></tr><tr><td valign='top'><font color='#FF0000'><b>&nbsp;<br />
<b>Notice</b>:  Undefined offset:  82754 in <b>E:\html\test\index.php</b> on line <b>61</b><br />
 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Notice</b>:  Undefined offset:  82754 in <b>E:\html\test\index.php</b> on line <b>63</b><br />
<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: 2005-01-25T15:32:00 '></font></br ><font size='2' ><br />
<b>Notice</b>:  Undefined offset:  82754 in <b>E:\html\test\index.php</b> on line <b>65</b><br />
</font></br ></br ></td></tr><tr><td valign='top'><font color='#FF0000'><b>&nbsp;<br />
<b>Notice</b>:  Undefined offset:  82755 in <b>E:\html\test\index.php</b> on line <b>61</b><br />
 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Notice</b>:  Undefined offset:  82755 in <b>E:\html\test\index.php</b> on line <b>63</b><br />
<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: 2005-01-25T15:32:00 '></font></br ><font size='2' ><br />
<b>Notice</b>:  Undefined offset:  82755 in <b>E:\html\test\index.php</b> on line <b>65</b><br />
</font></br ></br ></td></tr><tr><td valign='top'><font color='#FF0000'><b>&nbsp;<br />
<b>Notice</b>:  Undefined offset:  82756 in <b>E:\html\test\index.php</b> on line <b>61</b><br />
 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Notice</b>:  Undefined offset:  82756 in <b>E:\html\test\index.php</b> on line <b>63</b><br />
<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: 2005-01-25T15:32:00 '></font></br ><font size='2' ><br />
<b>Notice</b>:  Undefined offset:  82756 in <b>E:\html\test\index.php</b> on line <b>65</b><br />
</font></br ></br ></td></tr><tr><td valign='top'><font color='#FF0000'><b>&nbsp;<br />
<b>Notice</b>:  Undefined offset:  82757 in <b>E:\html\test\index.php</b> on line <b>61</b><br />
 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Notice</b>:  Undefined offset:  82757 in <b>E:\html\test\index.php</b> on line <b>63</b><br />
<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: 2005-01-25T15:32:00 '></font></br ><font size='2' ><br />
<b>Notice</b>:  Undefined offset:  82757 in <b>E:\html\test\index.php</b> on line <b>65</b><br />
</font></br ></br ></td></tr><tr><td valign='top'><font color='#FF0000'><b>&nbsp;<br />
<b>Notice</b>:  Undefined offset:  82758 in <b>E:\html\test\index.php</b> on line <b>61</b><br />
 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Notice</b>:  Undefined offset:  82758 in <b>E:\html\test\index.php</b> on line <b>63</b><br />
<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: 2005-01-25T15:32:00 '></font></br ><font size='2' ><br />
<b>Notice</b>:  Undefined offset:  82758 in <b>E:\html\test\index.php</b> on line <b>65</b><br />
</font></br ></br ></td></tr><tr><td valign='top'><font color='#FF0000'><b>&nbsp;<br />
<b>Notice</b>:  Undefined offset:  82759 in <b>E:\html\test\index.php</b> on line <b>61</b><br />
 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Notice</b>:  Undefined offset:  82759 in <b>E:\html\test\index.php</b> on line <b>63</b><br />
<img border='0' align='absmiddle' src='icon_clip.gif'alt='Meldingstijd: 2005-01-25T15:32:00 '></font></br ><font size='2' ><br />
<b>Notice</b>:  Undefined offset:  82759 in <b>E:\html\test\index.php</b> on line <b>65</b><br />
</font></br ></br ></td></tr><tr><td valign='top'><font color='#FF0000'><b>&nbsp;<br />
<b>Notice</b>:  Undefined offset:  82760 in <b>E:\html\test\index.php</b> on line <b>61</b><br />
 </b></font></td><td><font size='2' color='#0099ff'><br />
<b>Fatal error</b>:  Maximum execution time of 30 seconds exceeded in <b>E:\html\test\index.php</b> on line <b>63</b><br />
En in de browser : Notice: Array to string conversion.......

Geplaatst: 12 feb 2005, 23:57
door mosymuis
De uitkomst van var_dump, dus. Die andere errors geloof ik zo ook wel.

Geplaatst: 13 feb 2005, 02:06
door Dennis
mosymuis schreef:De uitkomst van var_dump, dus. Die andere errors geloof ik zo ook wel.
En??

Geplaatst: 13 feb 2005, 03:29
door mosymuis
mosymuis schreef:Kopiëer het eens uit de bron ipv van je scherm? ;)
mosymuis schreef:De uitkomst van var_dump, dus.

Geplaatst: 13 feb 2005, 15:57
door Dennis
mosymuis schreef:
mosymuis schreef:Kopiëer het eens uit de bron ipv van je scherm? ;)
mosymuis schreef:De uitkomst van var_dump, dus.
IEXplore--> Beeld --> Bron (of via rechtermuisknop) welke BRON bedoel jij dan?
Waar moet hij die uitkomst dan neerzetten?
Staat in de manual niks over.

Example 1. var_dump() example

Code: Selecteer alles

<?php
$a = array (1, 2, array ("a", "b", "c"));
var_dump($a);
?>  
The above example will output:

Code: Selecteer alles

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}
 
<?php

$b = 3.1;
$c = true;
var_dump($b, $c);

?>  

Geplaatst: 13 feb 2005, 17:21
door mosymuis
DAMnet schreef:IEXplore--> Beeld --> Bron (of via rechtermuisknop) welke BRON bedoel jij dan?
Precies, die bron. Hetgeen wat je hier postte was echter niet geknipt uit je bron, maar direct van het browser scherm.

Geplaatst: 13 feb 2005, 17:25
door Dennis
mosymuis schreef:
DAMnet schreef:IEXplore--> Beeld --> Bron (of via rechtermuisknop) welke BRON bedoel jij dan?
Precies, die bron. Hetgeen wat je hier postte was echter niet geknipt uit je bron, maar direct van het browser scherm.
Nee klopt, doen postte ik DIT dus is dat nu wel wat je wilde zien??

Geplaatst: 13 feb 2005, 17:27
door mosymuis
Nee, dat zijn de errors, niet de uitkomsten van var_dump().

Geplaatst: 13 feb 2005, 17:30
door Dennis
mosymuis schreef:Nee, dat zijn de errors, niet de uitkomsten van var_dump().
Hoe kan ik die dan vinden???


Ik dacht:

Code: Selecteer alles

natsort($files); 

var_dump ($files);
$test = var_dump ($files);
$dump = fopen("dump.php", "w");
$inhoud = "$test"; 
fwrite($dump, $inhoud);
fclose($dump);
Maar als ik de pagina opvraag, loopt al het geheugen vol, dus het testen gaat niet zo fast