regex?
Ik heb een menings vraag.
Ik heb in elk php script een bepaalde header gezet tussen bepaalde tags.
/*--startinit-->!
inhoud hier
!>--endinit*/
Nou vroeg ik me af... Wat is nou de beste, netste methode om de 'inhoud hier' in een var te krijgen? Ik dacht aan een regex, alleen ben ik hier nog niet in thuis, *als dit de beste methode is, zou iemand die dan willen schrijven voor me? met een uitleg dat ik het snap :)*
Ik zou niet weten hoe het anders moet.
mvg,
wesley.
En je kunt ook met explode of substr o.i.d. werken. Is beter dan regex. Maar dan zit je met eval en die is evil.
Hoe bedoel je php die nog is moet worden uitgevoerd? Daar heb ik het nooit over gehad. Ik vroeg alleen hoe ik de tekst, tussen die 2 tags in een var kon stoppen. Ik dacht aan regex, maar dat lukt mij niet. Dus vraag ik me af of iemand die regex voor mij kan maken met uitleg, dat ik er wat van leer. Of hoe het beter kan.
Wordt dit soms een bbcode parser ofzo?
Klooi eens wat met RegExr zou ik zeggen. Het is in principe niet zo moeilijk.
Stel voor je hebt dit bovenaan je php file:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
/*
*| Wettelijke publicaties
*| Deze plugin maakt het mogelijk om 1 of meerdere belgische btw nummers op te slaan,
waar u dan van te zien krijgt of er wijzigingen zijn aangebracht sinds de laatste keer dat u keek.
*| NL[Belgisch]
*| 0.1
*| Accounting/ Boekhouding
*| free
*| Wesley Overdijk
*| none.
!>--endinit*/
?>
/*
*| Wettelijke publicaties
*| Deze plugin maakt het mogelijk om 1 of meerdere belgische btw nummers op te slaan,
waar u dan van te zien krijgt of er wijzigingen zijn aangebracht sinds de laatste keer dat u keek.
*| NL[Belgisch]
*| 0.1
*| Accounting/ Boekhouding
*| free
*| Wesley Overdijk
*| none.
!>--endinit*/
?>
Dan word deze plugin geupload, en gaat mijn bot door de map heen op zoek naar de nieuwe plugins. Like so:
Code (php)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
function dirList ($directory)
{
// create an array to hold directory list
$results = array();
// create a handler for the directory
$handler = opendir($directory);
// keep going until all files in directory have been read
while ($file = readdir($handler)) {
// if $file isn't this directory or its parent,
// add it to the results array
if ($file != '.' && $file != '..')
$results[] = $file;
}
// tidy up: close the handler
closedir($handler);
// done!
return $results;
}
$allFiles = dirList('plugins');
foreach($allFiles as $crawlX)
{
echo "<h2>$crawlX</h2>";
$getHeaders = file_get_contents('plugins/'.$crawlX);
$segments = explode('!>--endinit*/',$getHeaders);
$pluginDetails = $segments[0];
$allPlugins = explode('*|', $pluginDetails);
echo "Name: ".$allPlugins[1]."<br />";
echo "Description: ".$allPlugins[2]."<br />";
echo "Language: ".$allPlugins[3]."<br />";
echo "Version: ".$allPlugins[4]."<br />";
echo "Subject: ".$allPlugins[5]."<br />";
echo "Licence: ".$allPlugins[6]."<br />";
echo "Author: ".$allPlugins[7]."<br />";
echo "Database: ".$allPlugins[8]."<br />";
}
?>
function dirList ($directory)
{
// create an array to hold directory list
$results = array();
// create a handler for the directory
$handler = opendir($directory);
// keep going until all files in directory have been read
while ($file = readdir($handler)) {
// if $file isn't this directory or its parent,
// add it to the results array
if ($file != '.' && $file != '..')
$results[] = $file;
}
// tidy up: close the handler
closedir($handler);
// done!
return $results;
}
$allFiles = dirList('plugins');
foreach($allFiles as $crawlX)
{
echo "<h2>$crawlX</h2>";
$getHeaders = file_get_contents('plugins/'.$crawlX);
$segments = explode('!>--endinit*/',$getHeaders);
$pluginDetails = $segments[0];
$allPlugins = explode('*|', $pluginDetails);
echo "Name: ".$allPlugins[1]."<br />";
echo "Description: ".$allPlugins[2]."<br />";
echo "Language: ".$allPlugins[3]."<br />";
echo "Version: ".$allPlugins[4]."<br />";
echo "Subject: ".$allPlugins[5]."<br />";
echo "Licence: ".$allPlugins[6]."<br />";
echo "Author: ".$allPlugins[7]."<br />";
echo "Database: ".$allPlugins[8]."<br />";
}
?>
Dit is dan de test. De echo. Maar dit word dan weg geschreven. Dat achter database zijn de tabellen die moeten worden aangemaakt bij installatie. Wel een mooi systeem toch
Maar waarom doe je het dan niet gelijk op phpdoc manier? Dan kan sommige editors er ook gelijk wat van snappen enzo. Want ik snap wel ongeveer die comments van die voorbeeld module, maar die laatste none bijvoorbeeld niet.
En ook is het met phpdoc makkelijk te genereren enzo.
Nou is de bedoeling dat mensen die niet programmeren, gebruik kunnen maken van dit project. deze mensen registreren zich en maken hun eigen website. Volledig variabel. alles kan aangepast worden. De lay-out, de locatie van de divs, vakken, flash objecten, plugins... Pagina's met username en password beschermen, registratie login, forum plugin, gastenboek plugin, accounting toold, boekhoud pakketten online. alles. Deze mensen bestellen dan optioneel een domein naam *of behouden de standaard, keuze.mijndomein.com* en hebben een eigen website, in een paar hele simpele stappen. het idee erachter is dat het zich blijft uitbreiden. Mensen willen bijvoorbeeld graag een... upload script voor bestanden, of.. een shoutbox. Als die plugins niet bestaan, worden die gemaakt, en kunnen toekomstige gebruikers deze direct kiezen. Het moet dus een enorme database met files en plugins worden. *extra uitleg, wss overbodig*
Dus ik wil ook zelf documentatie hebben edg, om een vaste syntax te maken voor plugins.
Jij moet het weten, maar ik zie nog steeds niet in waarom je niet gewoon een algemeen geaccepteerde manier wilt gebruiken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$file = '/*--startinit-->!
de inhoud
nog meer inhoud
blabla
!>--endinit*/';
if(preg_match('/\/\*\-\-startinit\-\->!(.*?)!>\-\-endinit\*\//is', $file, $matches)
{
echo $matches[1];
}[/code]
Geeft:
de inhoud
nog meer inhoud
blabla
$file = '/*--startinit-->!
de inhoud
nog meer inhoud
blabla
!>--endinit*/';
if(preg_match('/\/\*\-\-startinit\-\->!(.*?)!>\-\-endinit\*\//is', $file, $matches)
{
echo $matches[1];
}[/code]
Geeft:
de inhoud
nog meer inhoud
blabla
En de algemeen geaccepteerde manier is...? Dan maak ik dus een eigen parser, op de algemeen geaccepteerde manier of wat?
Mag ik zomaar hun syntax overnemen dan?
wesley schreef op 13.12.2009 20:04:
Mag ik zomaar hun syntax overnemen dan?
Het is zelfs aangeraden.
Waar is het aangeraden? Ik bedoel, zomaar een syntax van een bedrijf/ organisatie/ donno hoe je dat noemt overnemen is toch strafbaar?
wesley schreef op 13.12.2009 21:00:
Waar is het aangeraden? Ik bedoel, zomaar een syntax van een bedrijf/ organisatie/ donno hoe je dat noemt overnemen is toch strafbaar?
Jij mag toch ook php schrijven?
En het is aangeraden door de community, doordat het zo vaak wordt gebruikt.