<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mgBlog &#187; PHP</title>
	<atom:link href="http://mgsimon.de/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://mgsimon.de</link>
	<description>Esc(ape), einfach ein anderes Blog über technische Spielerei ...</description>
	<lastBuildDate>Fri, 16 Jul 2010 04:55:04 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>AdWz WP-Plugin 19 &#8211; PostProxy</title>
		<link>http://mgsimon.de/2009/03/18/adwz-wp-plugin-19-postproxy/</link>
		<comments>http://mgsimon.de/2009/03/18/adwz-wp-plugin-19-postproxy/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 07:15:49 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[AdWz]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=832</guid>
		<description><![CDATA[(AdWz; Auf dem Weg zum) WP-Plugin 19 &#8211; PostProxy Die letzten vier Teile der AdWz-Serie haben die Erweiterungen f&#252;r das Plugin mg404rewrite zur Umsetzung der Idee aus AdWz WP-Plugin 14 &#8211; Post beschrieben. Der HTTP-Response wird kurz vor dem Senden durch das Plugin ausgewertet und in allen Formularen mit der Methode Post wird eine aufl&#246;sbare [...]]]></description>
			<content:encoded><![CDATA[<p><strong>(AdWz; Auf dem Weg zum) WP-Plugin 19 &#8211; PostProxy</strong></p>
<p>Die letzten vier Teile der AdWz-Serie haben die Erweiterungen f&#252;r das Plugin mg404rewrite zur Umsetzung der Idee aus <a href="http://mgsimon.de/2009/03/03/adwz-wp-plugin-14-post/">AdWz WP-Plugin 14 &#8211; Post</a> beschrieben.</p>
<p>Der HTTP-Response wird kurz vor dem Senden durch das Plugin ausgewertet und in allen Formularen mit der Methode Post wird eine aufl&#246;sbare URL (Nicht-Permalink) gesetzt.</p>
<p>Im letzten Schritt muss diese aufl&#246;sbare URL durch ein weiteres Skript (PostProxy) verarbeitet werden.</p>
<p><span id="more-832"></span></p>
<p><strong>PostProxy</strong></p>
<p>Das <em>Unbekannte</em> &#8211; ein Formular mit der Methode Post an eine Permalink-URL &#8211; muss mit &#252;bertragenen Daten die urspr&#252;ngliche Permalink-Anfrage simulieren.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;mg404_posturl&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;mg404_level&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span>  <span style="color: #990000;">parse_url</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;mg404_posturl&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;REQUEST_URI&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;path&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;mg404_level&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> 
			<span style="color: #000088;">$chdir</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;../&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">chdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$chdir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_file</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;index.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;index.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Abgesichert durch die Abfragen in Zeile zwei und acht werden zur Simulation der urspr&#252;nglichen Permalink-Anfrage die Umgebungsvariable <strong>REQUEST_URI</strong> &#252;berschrieben (Zeile 4) und die Datei <strong>index.php</strong> von WordPress eingebettet (Zeile 9).</p>
<p><strong>REQUEST_URI</strong> wird durch WordPress ausgewertet und sollte wie eine <em>normale</em> mod_rewrite Permalink-Anfrage verarbeitet werden.  </p>
<p><strong>weiter &#8230;</strong></p>
<p>Das Plugin funktioniert mit der letzten Erweiterung in der lokalen Entwicklungsumgebung. Bevor die neue Version 0.7 auf der <a href="http://mgsimon.de/mg404rewrite/">Plugin-Seite</a> und im Plugin-Verzeichnis von WordPress.org aktualisiert wird, m&#252;ssen die &#196;nderungen noch entfernt in der vorgegebenen Umgebung des Providers getestet werden. </p>
<p><em>Erst einmal eine AdWz-Pause und dann demn&#228;chst auch die neue Version &#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2009/03/18/adwz-wp-plugin-19-postproxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AdWz WP-Plugin 18 &#8211; Regex &amp; PHP</title>
		<link>http://mgsimon.de/2009/03/16/adwz-wp-plugin-18-regex-php/</link>
		<comments>http://mgsimon.de/2009/03/16/adwz-wp-plugin-18-regex-php/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 07:25:06 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[AdWz]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Regex]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://mgsimon.de/?p=801</guid>
		<description><![CDATA[(AdWz; Auf dem Weg zum) WP-Plugin 18 &#8211; Regex &#038; PHP Im diesen Teil der AdWz-Serie werden die regul&#228;ren Ausdr&#252;cke aus AdWz WP-Plugin 17 &#8211; Regex im Plugin mg404rewrite eingesetzt. mg404_PostProxy 1 2 3 4 5 function mg404_PostProxy&#40;$content&#41; &#123; $formregex = &#34;/&#34; . get_option&#40;'mg404_postproxy_formregex'&#41; . &#34;/i&#34;; $content = preg_replace_callback&#40;$formregex,'mg404_FormProcessor',$content&#41;; return $content; &#125; In der f&#252;r [...]]]></description>
			<content:encoded><![CDATA[<p><strong>(AdWz; Auf dem Weg zum) WP-Plugin 18 &#8211; Regex &#038; PHP</strong></p>
<p>Im diesen Teil der AdWz-Serie werden die regul&#228;ren Ausdr&#252;cke aus <a href="http://mgsimon.de/2009/03/12/adwz-wp-plugin-17-regex/">AdWz WP-Plugin 17 &#8211; Regex</a> im Plugin mg404rewrite eingesetzt.</p>
<p><strong>mg404_PostProxy</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> mg404_PostProxy<span style="color: #009900;">&#40;</span><span style="color: #000088;">$content</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$formregex</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/&quot;</span> <span style="color: #339933;">.</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mg404_postproxy_formregex'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/i&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace_callback</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$formregex</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'mg404_FormProcessor'</span><span style="color: #339933;">,</span><span style="color: #000088;">$content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$content</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><span id="more-801"></span></p>
<p>In der f&#252;r den Ausgabepuffer angemeldeten Funktion (Zeile 1) wird der regul&#228;re Ausdruck (Zeile 2) aus der Konfiguration gelesen und f&#252;r die Suche aufbereitet. In PHP werden regul&#228;re Ausdr&#252;cke am Anfang und Ende durch ein <strong>/</strong> gekennzeichnet. Das Zeichen <strong>i</strong> f&#252;hrt diesen Ausdruck unabh&#228;ngig der Gro&#223;- / Kleinschreibung aus.</p>
<p>Die Funktion preg_replace_callback (Zeile 3) meldet f&#252;r diesen regul&#228;ren Ausdruck eine Funktion an. Sollte im Ausgabepuffer eine Form mit der Methode Post vorhanden sein, wird die angemeldete Funktion (mg404_FormProcessor) zur Auswertung ausgef&#252;hrt.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">mixed <span style="color: #990000;">preg_replace_callback</span>  <span style="color: #009900;">&#40;</span> mixed <span style="color: #000088;">$pattern</span>  <span style="color: #339933;">,</span> callback <span style="color: #000088;">$callback</span>  <span style="color: #339933;">,</span> mixed <span style="color: #000088;">$subject</span>  <span style="color: #009900;">&#91;</span><span style="color: #339933;">,</span> int <span style="color: #000088;">$limit</span>  <span style="color: #009900;">&#91;</span><span style="color: #339933;">,</span> int <span style="color: #339933;">&amp;</span><span style="color: #000088;">$count</span>  <span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span></pre></div></div>

<p>Jeder Treffer wird der Funktion &#252;bergeben und ausgewertet zur&#252;ck gegeben. Am Ende wird der modifizierte Ausgabepuffer &#252;berschrieben und gesendet.</p>
<p><strong>mg404_FormProcessor</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> mg404_FormProcessor<span style="color: #009900;">&#40;</span><span style="color: #000088;">$match</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$formtag</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$urlregex</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/&quot;</span> <span style="color: #339933;">.</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mg404_postproxy_urlregex'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/i&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$urlregex</span><span style="color: #339933;">,</span><span style="color: #000088;">$formtag</span><span style="color: #339933;">,</span><span style="color: #000088;">$actionurl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$linkregex</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/&quot;</span> <span style="color: #339933;">.</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mg404_postproxy_linkregex'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/i&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$linkregex</span><span style="color: #339933;">,</span><span style="color: #000088;">$actionurl</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$formtag</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$postproxyurl</span> <span style="color: #339933;">=</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'siteurl'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/&quot;</span> <span style="color: #339933;">.</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mg404_postproxy_url'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$formtag</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$actionurl</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000088;">$postproxyurl</span><span style="color: #339933;">,</span><span style="color: #000088;">$formtag</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$formtag</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;input type='hidden' name='mg404_posturl' value='&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$actionurl</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;'/&gt;&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$formtag</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;&lt;input type='hidden' name='mg404_level' value='&quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">substr_count</span><span style="color: #009900;">&#40;</span>get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'mg404_postproxy_url'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'/'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;'/&gt;&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$formtag</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>In der f&#252;r den regul&#228;ren Ausdruck angemeldeten Funktion (Zeile 1) wird der Treffer als Array &#252;bergeben. Mehrere Treffer w&#252;rden im Array durch Gruppierung (Klammerung) im regul&#228;ren Ausdruck &#252;bergeben, da in diesem Fall nur ein Treffer vorhanden sein kann wird der erste Index (0) in der Variable formtag (Zeile 2) abgelegt. Die URL der Aktion wird extrahiert (Zeile 4) und in actionurl zur weiteren Verarbeitung abgelegt. actionurl wird &#252;berpr&#252;ft (Zeile 6) und bei einem nicht vorhandenen Permalink wird die Funktion vorzeitig ohne Ver&#228;nderung verlassen (Zeile 7). Im anderen Fall wird das Form-Tag &#252;berarbeitet und zus&#228;tzlich der urspr&#252;nglichen URL der Aktion zur&#252;ck gegeben (Zeile 9-12).</p>
<p><strong>weiter &#8230;</strong></p>
<p>Der Ausgabepuffer wird der Konfiguration entsprechend ausgewertet. Zu guter Letzt muss PostProxy zur Simulation die angefragte URI &#252;berschreiben und die Datei index.php von WordPress einbetten. Ein weiteres Skript wird demn&#228;chst im n&#228;chsten Teil der AdWz-Serie erstellt.</p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2009/03/16/adwz-wp-plugin-18-regex-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSourcePerle DokuWiki</title>
		<link>http://mgsimon.de/2007/10/04/opensourceperle-dokuwiki/</link>
		<comments>http://mgsimon.de/2007/10/04/opensourceperle-dokuwiki/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 06:30:46 +0000</pubDate>
		<dc:creator>mg</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[OpenSourcePerle]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wiki]]></category>

		<guid isPermaLink="false">http://mgsimon.de/2007/10/04/opensourceperle-dokuwiki/</guid>
		<description><![CDATA[Eigentlich bin ich wie auch schon in den ersten Beitr&#228;gen zu erkennen auf Java. Ja, nicht nur der Café, sondern auch die Sprache kann wie eine Droge sein! :-) Privates Hosting mit einem aktuellen JDK und einer ServletEngine ist heute noch kaum zu bezahlen. Virtuelle Server haben unzureichenden Speicher und dedizierte, abgesehen vom Wartungs- und [...]]]></description>
			<content:encoded><![CDATA[<p>Eigentlich bin ich wie auch schon in den ersten Beitr&#228;gen zu erkennen auf Java. Ja, nicht nur der Café, sondern auch die Sprache kann wie eine Droge sein! :-) Privates Hosting mit einem aktuellen JDK und einer ServletEngine ist heute noch kaum zu bezahlen. Virtuelle Server haben unzureichenden Speicher und dedizierte, abgesehen vom Wartungs- und Konfigurationsaufwand, sind nicht wirklich g&#252;nstig. <a href="http://www.jspwiki.org/">JSPWiki</a> ist wegen Java mein bevorzugtes Wiki, aber in der Regel wird vom Provider OutOfTheBox ledeglich PHP angeboten. Also auf der Suche nach einem ordentlichem Wiki basierend auf PHP habe ich <a href="http://www.splitbrain.org/projects/dokuwiki">DokuWiki</a> gefunden.</p>
<p align="center"><img src="http://mgsimon.de/wp-content/uploads/2007/10/dokuwiki.png" alt="Logo DokuWiki" /></p>
<p> Die Installation beim Provider Strato (<img src="http://www.zanox-affiliate.de/ppv/?7168138C1577349709" align="bottom" border="0" height="1" hspace="1" width="1" /><a href="http://www.zanox-affiliate.de/ppc/?7168138C1577349709T">www.strato.de</a>) ist leicht.</p>
<p><span id="more-75"></span>Das heruntergelanden Paket von <a href="http://www.splitbrain.org/projects/dokuwiki" target="_blank">splitbrain.org</a> auspacken und via FTP zum Webspace &#252;bertragen. Nach erfolgreicher durchf&#252;hrung der Installationsroutine http://meineAdresse/meinWiki/install.php kann das Wiki unmittelbar eingesetzt werden. Ein Fehler ist mir durch das Hosting von DokuWiki bei Strato (<img src="http://www.zanox-affiliate.de/ppv/?7168138C1577349709" align="bottom" border="0" height="1" hspace="1" width="1" /><a href="http://www.zanox-affiliate.de/ppc/?7168138C1577349709T">www.strato.de</a>) aufgefallen. Aber Workarounds sind schon im <a href="http://wiki.splitbrain.org/wiki:install:hosted?s=strato" target="_blank">Wiki</a> zum DokuWiki von splitbrain.org zu finden.</p>
<p>Auf dieses Wiki bin ich durch meinem Vergleich zwischen <a href="http://www.jspwiki.org/" target="_blank">JSPWiki</a> und DokuWiki gekommen. Der gute Artikel bei <a href="http://de.wikipedia.org/wiki/Dokuwiki" target="_blank">wikipedia</a> und der <a href="http://www.wikimatrix.org/show/dokuwiki" target="_blank">Wiki-Vergleichsseiten</a> von WikiMatrix haben mir sehr geholfen.</p>
]]></content:encoded>
			<wfw:commentRss>http://mgsimon.de/2007/10/04/opensourceperle-dokuwiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
