<?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>PHP-Friends Blog &#187; Marvin Strauch</title>
	<atom:link href="http://php-friends.de/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://php-friends.de</link>
	<description>Internet, Soft- &#38; Hardware, Erfahrungsberichte, PHP. Unsere Artikel zum digitalen Leben.</description>
	<lastBuildDate>Sat, 21 Aug 2010 22:29:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Erfahrungsbericht: netcup GmbH (vServer)</title>
		<link>http://php-friends.de/erfahrungsberichte/erfahrungsbericht-netcup-gmbh-vserver-angebo/</link>
		<comments>http://php-friends.de/erfahrungsberichte/erfahrungsbericht-netcup-gmbh-vserver-angebo/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 07:17:17 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Erfahrungsberichte]]></category>
		<category><![CDATA[Websites]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=428</guid>
		<description><![CDATA[Hallo treue Blogleser! Ich würde euch gerne einen nicht gerade unbekannte Webhoster namens &#8220;netcup&#8221; vorstellen und euch in dem Zusammenhang auch direkt meine Erfahrungen mitgeben. Früher war netcup noch im Hetzner Rechenzentrum verteten, wie das heute ist, weiß ich nicht. Ich besitze dort schon seit mehr als einem Jahr einen vServer und bin mehr als]]></description>
			<content:encoded><![CDATA[<p>Hallo treue Blogleser!</p>
<p>Ich würde euch gerne einen nicht gerade unbekannte Webhoster namens &#8220;<a href="netcup.de" target="_blank">netcup</a>&#8221; vorstellen und euch in dem Zusammenhang auch direkt meine Erfahrungen mitgeben. Früher war netcup noch im Hetzner Rechenzentrum verteten, wie das heute ist, weiß ich nicht.</p>
<p><span id="more-428"></span></p>
<p>Ich besitze dort schon seit <em>mehr als einem Jahr</em> einen vServer und bin mehr als zufrieden, aber ich will jetzt nicht dem Erfahrungsbericht vorweg greifen. Wahrscheinlich bin ich sowieso schon voreingenommen ;b</p>
<p>Im weiteren Artikel werde ich nur auf die vServer-Angebote eingehen, dennoch denke ich, dass die anderen Produkte ähnlich gut vertrieben werden.</p>
<p>Sobald man sich das Angebot von netcup.de anschaut, fallen die günstigen vServer-Preise auf. Selbst für wenig Geld gibt es viel Leistung. Als Beispiel könnt ihr euch den <em><a href="http://www.netcup.de/bestellen/produkt.php?produkt=145">v(olks)Server 250 1M</a> anschauen</em><em>:</em></p>
<p style="text-align: center;"><a href="http://php-friends.de/wp-content/uploads/2010/08/netcup_leistungen1.jpg"><img class="size-medium wp-image-442 aligncenter" title="Netcup: vServer Daten" src="http://php-friends.de/wp-content/uploads/2010/08/netcup_leistungen1-300x216.jpg" alt="Daten eines vServers von netcup.de" width="300" height="216" /></a></p>
<p>Rechnungen kann man bequem per CCP(Customer Control Panel) bezahlen bzw. einsehen. Mit den Domains ist es ähnlich.</p>
<p>Der Service/Support von netcup ist prima. Wenn ich Hilfe benötigt habe, war der Support stehts freundlich und kompetent. Schnelle Antworten sind an der Tagesordnung. Das Gegenteil davon ist von den Aufällen meines vServers zu behaupten &#8211; alle Downtimes wurden mir vorzeitig per eMail angekündigt.</p>
<p>Die Leistung der vServer ist einfach spitze. Da &#8220;spitze&#8221; ein sehr subjektiver Ausdruck ist, werde ich gerne genauer. Auf diesem <a href="http://www.netcup.de/bestellen/produkt.php?produkt=86">vServer</a>(vServer Silber) lief ein gutbesuchter CSS Public Server(16 Slots) und 1-2 Clanserver ruckelfrei, ohne irgendwelche Modifikationen am Kernel(vServer eben) oder eines vorinstalliertem &#8220;Gameserver Image&#8221;. Irgendwann war nur der RAM voll und die Server haben sich selber abgeschossen. Aber was erwartet man von einem vServer? Ich finde dieses Ergebnis schon ziemlich beeindruckend. Vielleicht habe ich auch nur ein besonders gutes Wirtssystem erwischt <img src='http://php-friends.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Mein Fazit: Netcup ist wirklich ein ausgezeichneter Serveranbieter. Der Support ist sehr gut. Das Preis-Leistung-Verhältnis ist einfach perfekt.</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/erfahrungsberichte/erfahrungsbericht-netcup-gmbh-vserver-angebo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vorstellung: cFTP (clients-oriented-ftp)</title>
		<link>http://php-friends.de/php/erfahrung-test-cftp-clients-oriented-ftp/</link>
		<comments>http://php-friends.de/php/erfahrung-test-cftp-clients-oriented-ftp/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 00:22:19 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Erfahrungsberichte]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=360</guid>
		<description><![CDATA[Hallo liebe Blogleser! Heute wollte ich euch mal eine interessante Websoftware namens &#8220;cFTP&#8221; (clients-oriented-ftp) vorstellen. cFTP allows you to create clients accounts with a very easy to use front end. Then you can upload as much files as you want under each account, with the ability to add a title and description to each one.[...]]]></description>
			<content:encoded><![CDATA[<p>Hallo liebe Blogleser!</p>
<p>Heute wollte ich euch mal eine interessante Websoftware namens &#8220;cFTP&#8221; (clients-oriented-ftp) vorstellen.</p>
<blockquote><p><strong>cFTP</strong> allows you to create clients accounts with a very easy to use front end. Then you can upload as much files as you want under each account, with the ability to add a title and description to each one.<a href="http://code.google.com/p/clients-oriented-ftp/">[...]</a></p></blockquote>
<p>Ich habe das Tool mal angetestet. Viel Spaß beim Lesen!<br />
<span id="more-360"></span></p>
<p>cFTP erlaubt es uns, Benutzer zu erstellen, die über ein einfaches Frontend Dateien (mit Titel und Beschreibung) uploaden und diese dann der ganzen Welt zur Verfügung stellen können. Das klingt ja erstmal gar nicht so schlecht. Die Vorteile oder auch Features von cFTP werden uns auf der <a href="http://code.google.com/p/clients-oriented-ftp/" target="_blank">Entwicklerseite</a> genannt.</p>
<blockquote><p><strong>Some of the features of cFTP:</strong></p>
<ul>
<li>Really simple and attractive design. Ease of use for both users and clients!</li>
<li>Comes with an installer, much like the WordPress one.</li>
<li>User roles (Administrator. Account Manager, Uploader)</li>
<li>Sortable full lists of files, users and clients</li>
<li>Options for localization (you can select your timezone and date format). This is refllected inmediatly on every list.</li>
<li>On the listings, picture files not only have the mandatory download link, but also a thumbnail for easy recognition.</li>
<li>Options and logo selection pages. Your company logo is seen on the clients lists.</li>
<li>Can be translated easily (all texts strings are located on a specific file)</li>
</ul>
</blockquote>
<p>Das benutzerbasierte Uploadscript besitzt also ein &#8220;simple and attractive&#8221; Design, kann Thumbnails bei Bilderuploads erstellen und leicht in alle Sprachen übersetzt werden etc. Ferner sollte man noch erwähnen, dass dieses Script Ajax verwendet und benötigt. Aufgrund all dieser Funktionen haben wir cFTP mal installiert und geschaut was es so alles hergibt:</p>
<p><strong>Installation:</strong> Die Installation ist vollkommen unproblematisch. In der beiliegenden readme.txt sind alle notwendigen Installationsschritte aufgeführt, und wenn man sich daran hält, kann eigentlich nichts schief gehen! <img src='http://php-friends.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Design und Aufbau:</strong> Das Design ist &#8211; wie es schon in der Beschreibung steht &#8211; schlicht und übersichtlich und meiner Meinung nach auch sehr schön. <img src='http://php-friends.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Der Aufbau ist weder überladen, noch findet man sich schwer zurecht. Nachdem man einen &#8220;Client&#8221; angelegt hat, kann das Uploaden auch schon beginnen. Manchmal wird man auch von kleinen (durch Ajax generierte) Fenstern beglückt.</p>
<p><strong>Der Code:</strong> Ich habe nur mal schnell in den Code geguckt &#8211;  Code und Style werden offenbar nicht strikt getrennt. Außerdem wird auf Obektorientierte Programmierung beinahe komplett verzichtet. Die einzige Ausnahme scheint das Datenbankobjekt zu sein.</p>
<p><strong>Anwendung:</strong> Über den Standardbenutzer (admin) kann man nun entweder einen &#8220;Client&#8221; (Uploadberechtigung) oder einen &#8220;User&#8221; (entweder Admin, Account Manger oder Uploaderberechtigung) erstellen. Man stellt fest, dass man einem Client mehr Zusatzinformationen geben kann, als einem User. Nachdem man einen Account hat, der uploadfähig ist, kann direkt der erste Testupload durchgeführt werden. Datei auswählen, Titel und Beschreibung eingeben &#8211; und hochladen! Fertig. Danach wird man zu einer Liste mit allen hochgeladenen Dateien des Benutzers weitergeleitet. Unter anderem bekommt man dort Thumbnails für Bilder und die restlichen Zusatzinformationen angezeigt.</p>
<p><strong>Fazit:</strong> cFTP ist ein sehr interessantes Script und für bestimmte Anwendungsbereiche (z.B. wenn man den Zugriff von Uploadern beschränken möchte) mit Sicherheit hilfreich. Nachteile sind sicherlich, dass so genannte Multiuploads nicht unterstützt werden und ich keine Begrenzung des Uploadlimits finden konnte. Dies ließe sich notfalls (wenn auch unschön) per php.ini regeln. Dennoch sollte man cFTP auf jeden Fall mal ausprobiert haben!</p>
<p><a href="http://www.facebook.com/#!/album.php?aid=23713&amp;id=119992318014257" target="_blank">Screenshots gibt es übrigens hier.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/erfahrung-test-cftp-clients-oriented-ftp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>W3C vereint seine Validierungsdienste</title>
		<link>http://php-friends.de/allgemein/w3c-vereint-seine-validierungsdienste-unicorn/</link>
		<comments>http://php-friends.de/allgemein/w3c-vereint-seine-validierungsdienste-unicorn/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 07:32:54 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Nachrichten & Interessantes]]></category>
		<category><![CDATA[Websites]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=393</guid>
		<description><![CDATA[W3C vereint seine 4 Validatoren(HTML, CSS, Mobil, RSS-Feed) in einem neuen Projekt namens Unicorn. Um es kurz zu sagen: Es ist einfach eine Anwendung, die alle Validatorendienste beinhaltet. Die in JAVA geschriebene Open-Source Anwendung kann heruntergeladen und lokal installiert werden. Hilfe bei der Installation gibt es in der Dokumentation. Ein anderer Vorteil &#8211; neben der lokalen Installtion]]></description>
			<content:encoded><![CDATA[<p>W3C vereint seine 4 Validatoren(<a href="http://validator.w3.org/">HTML</a>, <a href="http://jigsaw.w3.org/css-validator/">CSS</a>, <a href="http://validator.w3.org/mobile/">Mobil</a>, <a href="http://validator.w3.org/feed/">RSS-Feed</a>) in einem neuen Projekt namens <a href="http://validator.w3.org/unicorn/">Unicorn</a>. Um es kurz zu sagen: Es ist einfach eine Anwendung, die alle Validatorendienste beinhaltet. Die in JAVA geschriebene Open-Source Anwendung kann <a href="http://code.w3.org/unicorn/wiki/Documentation/Install">heruntergeladen</a> und lokal installiert werden. Hilfe bei der Installation gibt es in der <a href="http://code.w3.org/unicorn/wiki/Documentation/Install">Dokumentation</a>. Ein anderer Vorteil &#8211; neben der lokalen Installtion &#8211; ist auch, dass falls man seine Seite validieren möchte, besteht die Möglichkeit, auszuwählen, welche Überprüfungen durchgeführt werden sollen. Gleichzeitig kann man aber auch wie gewohnt weiter auf die einzelnen Validatorendienste zugreifen.</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/allgemein/w3c-vereint-seine-validierungsdienste-unicorn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2,8 GB Facebook Daten &#8220;gecrawlt&#8221;</title>
		<link>http://php-friends.de/allgemein/2-8-gb-facebook-daten-gecrawlt/</link>
		<comments>http://php-friends.de/allgemein/2-8-gb-facebook-daten-gecrawlt/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 21:56:25 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Nachrichten & Interessantes]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Websites]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=372</guid>
		<description><![CDATA[Hab heute dies bei Twitter entdeckt und auch schon fleißig retweetet und möchte es auch euch nicht vorenthalten. Ron Bowes hat einen Crawler geschrieben, mit dem er auf Facebook mehr oder weniger sensible Daten &#8220;ercrawlt&#8221; hat. Um genau zu sein 2,8 Gigabyte an Datensätze. Unten dazu mehr. Die 2.8GB enthalten: die URL jedes suchbaren Facebook]]></description>
			<content:encoded><![CDATA[<p>Hab heute dies bei Twitter entdeckt und auch schon fleißig retweetet und möchte es auch euch nicht vorenthalten. <a href="http://www.skullsecurity.org/blog/?author=2">Ron Bowes</a> hat einen Crawler geschrieben, mit dem er auf Facebook mehr oder weniger sensible Daten &#8220;ercrawlt&#8221; hat. Um genau zu sein 2,8 Gigabyte an Datensätze. Unten dazu mehr.</p>
<p><span id="more-372"></span></p>
<blockquote><p>Die 2.8GB enthalten:</p>
<ul>
<li>die URL jedes suchbaren Facebook Benutzerprofils</li>
<li>den Namen jedes suchbaren Facebook-Nutzers (unique und nummeriert, perfect  zur Datenaufbereitung)</li>
<li>verarbeitete Listen, darunter Vorname mit count, Nachname mit count, potentielle Nutzernamen mit count… (leider weiß ich nicht genau, was “count” im Facebook-Universum bedeutet. Dazu müsste ich mir die Daten erst einmal ansehen. Zum Beispiel mit <a href="http://www.r-project.org/">R</a>. Ich vermute aber, dass es die Anzahl der Freunde bezeichnet.)</li>
<li>das Script zum Crawlen</li>
</ul>
</blockquote>
<p>Falls ihr helfen wollt(verstößt gegen die robots.txt von Facebook&#8230;) oder Interesse an dem Torrent habt -&gt; <a href="http://www.linus-neumann.de/2010/07/27/ein-torrent-mit-facebook-daten/">http://www.linus-neumann.de/2010/07/27/ein-torrent-mit-facebook-daten/</a> .</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/allgemein/2-8-gb-facebook-daten-gecrawlt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erfahrung: HTC Legend bestellt auf amazon.de</title>
		<link>http://php-friends.de/allgemein/htc-legend/</link>
		<comments>http://php-friends.de/allgemein/htc-legend/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 09:14:08 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Erfahrungsberichte]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=358</guid>
		<description><![CDATA[Nach langer Inaktivität hab ich mal wieder was zum berichten :b Habe mir am Samstag so gegen 14:00 Uhr das HTC Legend und Sennheiser In Ear Kopfhörer bei amazon.de bestellt. Als Versandoption habe ich den &#8220;Overnight-Express&#8221;(+13€ Aufpreis) gewählt, weil ich sehr ungeduldig bin. Eine Investition, die sich lohnt, dachte ich&#8230; Laut dem voraussichtlichen Liefertermin sollten die]]></description>
			<content:encoded><![CDATA[<p>Nach langer Inaktivität hab ich mal wieder was zum berichten :b</p>
<p><span id="more-358"></span></p>
<p>Habe mir am Samstag so gegen 14:00 Uhr das <a title="HTC Legend" href="http://www.htc.com/de/product/legend/overview.html" target="_blank">HTC Legend</a> und <a title="Sennheiser Kopfhörer" href="ttp://www.amazon.de/Sennheiser-CX-200-Ear-Kopfhörer-Earadapterset/dp/B001EZUQ5E/ref=sr_1_1?ie=UTF8&amp;s=ce-de&amp;qid=1280171570&amp;sr=1-1" target="_blank">Sennheiser In Ear Kopfhörer</a> bei amazon.de bestellt. Als Versandoption habe ich den &#8220;Overnight-Express&#8221;(+13€ Aufpreis) gewählt, weil ich sehr ungeduldig bin. Eine Investition, die sich lohnt, dachte ich&#8230;</p>
<p>Laut dem voraussichtlichen Liefertermin sollten die Artikel gestern angekommen sein, was irritierend ist, weil meine Bestellung  bis gestern(Montag -&gt; Overnight) noch nicht mal verschickt ist.</p>
<p>Gut. So viel Zeit ist noch nicht vergangen, aber ich dachte mit dem Overnight-Express würde ich Zeit sparen.</p>
<p>Wie sich aber letztendlich herausstellte, lag  das Problem ganz woanders. Amazon war so freundlich und hat mir gestern(Montag) um 23 Uhr geschrieben, dass die Zahlungsart, in meinem Fall &#8220;Rechnung&#8221;, nicht möglich ist und hat meinen Auftrag storniert. Ich persönlich empfinde es als Frechheit &#8211; ich warte 3 Tage(inklusive Sonntag) und um 23 Uhr fällt dann auf, dass die Zahlungsmodalität nicht verfügbar ist. Das Handy werde ich mir wohl jetzt nächste Woche bei Saturn/Media Markt kaufen gehen.</p>
<p>Das war wirklich meine bisher schlechteste Erfahrung, die ich mit amazon.de hatte, obwohl &#8220;schlecht&#8221; jetzt natürlich relativ zu sehen ist. Ich wäre sehr glücklich darüber, wenn mir das nächste mal sowas VOR der Bestellung gesagt werden würde.</p>
<p>// Update 29.7.2010: Hab das Handy und die Kopfhörer jetzt doch noch mal am Dienstag bei amazon.de bestellt(wieder Overnight) und es kam Mittwoch an. Klappt ja doch ganz gut. Man muss eben nur per Kreditkarte zahlen&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/allgemein/htc-legend/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Erfahrungbericht] logiprint / logiprint.com</title>
		<link>http://php-friends.de/erfahrungsberichte/erfahrungbericht-logiprint-logiprint-com/</link>
		<comments>http://php-friends.de/erfahrungsberichte/erfahrungbericht-logiprint-logiprint-com/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 13:27:54 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Erfahrungsberichte]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=337</guid>
		<description><![CDATA[Nun kommt endlich mein Erfahrungbericht zu der Onlinedruckerei &#8220;logiprint&#8221;, den ich schon vor ein paar Tagen angekündigt habe. Die Vorgeschichte sollte eigentlich bekannt sein &#8211; wer diese aber noch lesen muss: Post von Logiprint. Am 24.11.09 habe ich meinen Gutschein im Wert von 35€ bei logiprint eingelöst. Meine Auswahl viel auf 500 Visitenkarten(19, 90€) und]]></description>
			<content:encoded><![CDATA[<p>Nun kommt endlich mein Erfahrungbericht zu der Onlinedruckerei &#8220;logiprint&#8221;, den ich schon vor ein paar Tagen angekündigt habe.</p>
<p>Die Vorgeschichte sollte eigentlich bekannt sein &#8211; wer diese aber noch lesen muss: <a href="http://php-friends.de/allgemein/logiprint-com/235/">Post von Logiprint</a>.<br />
<span id="more-337"></span></p>
<p>Am 24.11.09 habe ich meinen Gutschein im Wert von 35€ bei logiprint eingelöst. Meine Auswahl viel auf 500 Visitenkarten(19, 90€) und 150 Midi-Adressaufkleber(7, 90€). Eigentlich wollte ich mir noch ein Visitenkarten-Etui dazu bestellen, doch leider reichte dafür das Budget nicht aus.</p>
<p>Ich konnte mir meine Kunstwerke selber nach Wunsch erstellen und hatte eine breite Palette an Designs zur Verfügung. Mir fiel es sehr leicht meine Visitenkarten und auch die Adressaufkleber zu gestalten, obwohl ich soetwas noch nie gemacht habe. Danach ging es dann ab zur Adresseingabe und auch zur Kasse. Schnell war der Gutscheincode eingegeben und es stellte sich heraus, dass ich nichts zahlen musste. <img src='http://php-friends.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left;"><a href="http://php-friends.de/wp-content/uploads/2009/11/DSC01451.JPG"><img class="size-medium wp-image-336 alignleft" title="LogiPrint.com - Visitenkarte und Adressaufkleber" src="http://php-friends.de/wp-content/uploads/2009/11/DSC01451-300x225.jpg" alt="LogiPrint.com - Visitenkarte und Adressaufkleber" width="300" height="225" /></a> Weitere 2 Tage später, also am 26.11.09, kam dann die   Versandbestätigung per E-Mail . Diese sollte durch die DPD erfolgen.  Und  heute sind meine prachtvollen Karten angekommen, natürlich gut und sorgfälltig verpackt.</p>
<p style="text-align: left;">Ich bin mit der Verarbeitung vollkommen zufrieden &#8211; nachgezählt hab ich allerdings noch nicht, obwohl ich nicht glaube, dass etwas fehlt. :b</p>
<p><a href="http://php-friends.de/wp-content/uploads/2009/11/DSC01450.JPG"><img class="alignleft size-medium wp-image-335" title="LogiPrint.com - Visitenkarte und Adressaufkleber" src="http://php-friends.de/wp-content/uploads/2009/11/DSC01450-300x225.jpg" alt="LogiPrint.com - Visitenkarte und Adressaufkleber" width="300" height="225" /></a></p>
<p style="text-align: left;">Zusammenfassend kann ich sagen, dass der Service von logiprint / logiprint.com und mein Gesamteindruck, den ich von ihnen sammeln konnte, sehr gut ist und auch die Bearbeitung zügig von statten ging. Ich als kleine Privatperson kann natürlich nicht sagen, wie es mit Großaufträgen aussieht, aber meine Visitenkarten sind aber auf jeden Fall der Rennern.</p>
<p style="text-align: left;">
<p style="text-align: left;">Mit freundlichen Grüßen,</p>
<p style="text-align: left;">Marvin</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/erfahrungsberichte/erfahrungbericht-logiprint-logiprint-com/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Erweiterte/Flexible PHP BBCode Klasse</title>
		<link>http://php-friends.de/php/erweiterte-flexible-phpbbcode-klasse/</link>
		<comments>http://php-friends.de/php/erweiterte-flexible-phpbbcode-klasse/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 12:09:24 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=323</guid>
		<description><![CDATA[Guten Morgen Nach meiner ersten, meiner Meinung nach, etwas missratenen &#8220;einfachen&#8221; PHP BBCode Klasse, wollte ich diese etwas erweitern und verbessern. Dies habe ich erreicht, indem man nun eigene BBCodes in den Parser laden kann, was die ganze Klasse flexibler gestaltet. Außerdem hab ich die alten Klassenstruktur etwas verändert, obwohl ich mit der aktuellen auch]]></description>
			<content:encoded><![CDATA[<p>Guten Morgen <img src='http://php-friends.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Nach meiner ersten, meiner Meinung nach, etwas missratenen &#8220;einfachen&#8221; PHP BBCode Klasse, wollte ich diese etwas erweitern und verbessern. Dies habe ich erreicht, indem man nun eigene BBCodes in den Parser laden kann, was die ganze Klasse flexibler gestaltet. Außerdem hab ich die alten Klassenstruktur etwas verändert, obwohl ich mit der aktuellen auch nicht richtig zufrieden bin. Aber es sollte ja nur ein &#8220;Upgrade&#8221; für die alte PHP BBCode Klasse sein und keine &#8220;Neuentwicklung&#8221;. Genug geredet hier ist sie, wie immer schlecht dokumentiert:</p>
<p><span id="more-323"></span></p>
<p><strong>Erweiterte/Flexible PHP BBCode Klasse(Code)</strong></p>
<pre class="brush: php;">
&lt;?php

class BBCodeParser
{
	private $BBCodesDefault=&quot;&quot;;
	private $BBCodesExtra=&quot;&quot;;
	private $rawText;

	public function __construct()
	{
		if(!isset($this-&gt;BBCodesDefault) OR !isset($this-&gt;BBCodesExtra))
		{
			trigger_error(&quot;Es fehlen wichtige Variablen! Bitte kontrollieren Sie die Klasse.&quot;);
		}
		$this-&gt;addDefaultBBCodes();
	}

	private function addDefaultBBCodes()
	{
		$this-&gt;BBCodesDefault = array(&quot;b&quot; =&gt; array(&quot;/\[b\](.*)\[\/b\]/isU&quot; =&gt; &quot;&lt;b&gt;$1&lt;/b&gt;&quot;),
								      &quot;i&quot; =&gt; array(&quot;/\[i\](.*)\[\/i\]/isU&quot; =&gt; &quot;&lt;i&gt;$1&lt;/i&gt;&quot;),
								      &quot;url&quot; =&gt; array(&quot;/\[url\=(.*)\](.*)\[\/url\]/isU&quot; =&gt; &quot;&lt;a href=\&quot;$1\&quot;&gt;$2&lt;/a&gt;&quot;),
								      &quot;youtube&quot; =&gt; array(&quot;/\[youtube\](.*)\[\/youtube\]/isU&quot; =&gt; &quot;&lt;object width=\&quot;560\&quot; height=\&quot;340\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/$1\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowFullScreen\&quot; value=\&quot;true\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowscriptaccess\&quot; value=\&quot;always\&quot;&gt;&lt;/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/$1\&quot; type=\&quot;application/x-shockwave-flash\&quot; allowscriptaccess=\&quot;always\&quot; allowfullscreen=\&quot;true\&quot; width=\&quot;560\&quot; height=\&quot;340\&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&quot;),
								      &quot;img&quot; =&gt; array(&quot;/\[img\](.*)\[\/img\]/isU&quot; =&gt; &quot;&lt;img src=\&quot;$1\&quot; alt=\&quot;\&quot; title=\&quot;\&quot; /&gt;&quot;));
	}

	public function addExtraBBCode($name, $bbCodePattern, $htmlCodePattern)
	{
		if(!isset($this-&gt;BBCodesExtra[$name]))
		{
			$this-&gt;BBCodesExtra[$name] = array($bbCodePattern =&gt; $htmlCodePattern);
		}
		else
		{
			trigger_error(&quot;BBCodename existiert bereits&quot;);
		}
	}

	private function parseExtraCode()
	{
		if(!is_array($this-&gt;BBCodesExtra)) return $this-&gt;rawText;

		foreach($this-&gt;BBCodesExtra as $BBCode =&gt; $array)
		{
			foreach($array as $BBCodePattern =&gt; $htmlPattern)
			{
				$this-&gt;rawText = preg_replace($BBCodePattern, $htmlPattern, $this-&gt;rawText);
			}
		}
		return $this-&gt;rawText;
	}

	private function iniParse($rawText)
	{
	$this-&gt;rawText = $rawText;
		foreach($this-&gt;BBCodesDefault as $BBCode =&gt; $array)
		{
			if(stripos($this-&gt;rawText, &quot;[&quot;.$BBCode.&quot;]&quot;) !== FALSE &amp;&amp; stripos($this-&gt;rawText, &quot;[/&quot;.$BBCode.&quot;]&quot;) !== FALSE)
			{
				return true;
			}
			continue;
		}
		if(is_array($this-&gt;BBCodesExtra))
		{
			foreach($this-&gt;BBCodesExtra as $BBCode =&gt; $array)
			{
				if(stripos($this-&gt;rawText, &quot;[&quot;.$BBCode.&quot;]&quot;) !== FALSE &amp;&amp; stripos($this-&gt;rawText, &quot;[/&quot;.$BBCode.&quot;]&quot;) !== FALSE)
				{
					return true;
				}
				continue;
			}
		}

		return false;
	}

	private function parseCode()
	{
		if($this-&gt;rawText == &quot;&quot;)
		{
			trigger_error(&quot;Diese Funktion muss erst durch iniParse() initialisert werden!&quot;);
		}

		foreach($this-&gt;BBCodesDefault as $BBCode =&gt; $array)
		{
			foreach($array as $search =&gt; $html)
			{
				$this-&gt;rawText = preg_replace($search, $html, $this-&gt;rawText);
			}
		}

		return $this-&gt;rawText;
	}

	public function Parser($rawText)
	{
		//$this-&gt;rawText = htmlentities($rawText);
		if(!$this-&gt;iniParse($rawText)) return $this-&gt;rawText;
		$this-&gt;parseCode();
		$this-&gt;parseExtraCode();
		return $this-&gt;rawText;
	}
}
?&gt;
</pre>
<p>Eine Demo gibt es hier zu sehen: <a href="http://snippets.php-friends.de/BBCodeTest.php">DEMO</a>. Obwohl man natürlich nur den geparsten Text sehen kann, also bringt es nicht viel.</p>
<p><strong><br />
Erweiterte/Flexible PHP BBCode Klasse &#8211; DEMO(Code)</strong></p>
<pre class="brush: php;">
&lt;?php

include_once(&quot;./BBCode2.class.php&quot;);

// Parser wird initialisiert
$bbcode = new BBCodeParser();

//Test mit BBCode
$text = &quot;[URL=http://php-friends.de]PHP-Friends[/URL][I][B]Text[/B][B]Text2[/B][/I][youtube]gUeeIjyI7QQ[/youtube]&lt;br /&gt;&quot;;

// Text ohne BBCode
$text2 = &quot;ABC&lt;br /&gt;&quot;;

// Eigenen BBCode einfügen

$bbcode-&gt;addExtraBBCode(&quot;h1&quot;, &quot;/\[h1\](.*)\[\/h1\]/isU&quot;, &quot;&lt;h1&gt;$1&lt;/h1&gt;&quot;);

// Wird der eigene BBCode geparst?
$text3 = &quot;[h1]Marvin[/h1]&quot;;

//Ausgabe
echo $bbcode-&gt;Parser($text3);
echo $bbcode-&gt;Parser($text2);
echo $bbcode-&gt;Parser($text);
?&gt;</pre>
<p>Bei Anregungen und/oder Kritik bitte das Kommentarsystem nutzen; E-Mail ist natürlich auch okay.</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/erweiterte-flexible-phpbbcode-klasse/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Erfahrungsbericht: WebhostOne e.K. &#8211; nur gute Erfahrungen!</title>
		<link>http://php-friends.de/erfahrungsberichte/erfahrungsbericht-webhostone-gute-erfahrungen/</link>
		<comments>http://php-friends.de/erfahrungsberichte/erfahrungsbericht-webhostone-gute-erfahrungen/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 01:15:40 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Erfahrungsberichte]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=302</guid>
		<description><![CDATA[Hallo Leser! Zu dieser späten Stunde möchte ich euch über meine guten Erfahrungen mit WebhostOne berichten. Aber ich möchte nicht allzu viel vorweg greifen&#8230; Angefangen hat mein Weg mit WebhostOne am 02.02.2009 mit einem Webpspacepaket und der ersten Rechnung &#8211; dies &#8220;überdauert&#8221; bis heute. In diesem Erfahrungsbericht möchte und kann ich auch nur einen Einblick]]></description>
			<content:encoded><![CDATA[<p>Hallo Leser!</p>
<p>Zu dieser späten Stunde möchte ich euch über meine guten Erfahrungen mit <a href="http://www.webhostone.de/" target="_blank">WebhostOne</a> berichten. Aber ich möchte nicht allzu viel vorweg greifen&#8230;<br />
<span id="more-302"></span></p>
<p>Angefangen hat mein Weg mit WebhostOne am 02.02.2009 mit einem Webpspacepaket und der ersten Rechnung &#8211; dies &#8220;überdauert&#8221; bis heute. In diesem Erfahrungsbericht möchte und kann ich auch nur einen Einblick auf die Webspacepakete geben, weil ich mit den sonstigen Produkten von WebhostOne keine Erfahrungen gemacht habe.</p>
<p>Die Abbuchungen verlaufen reibungslos &#8211; Rechnungen werden per E-Mail verschickt, wobei man diese natürlich auch nochmal im etwas spartanisch geratenen Kundeninterface nachschauen kann.</p>
<p>Auch wenn die Preise im Verhältnis zum Speicherplatz hoch erscheinen, bietet der Webspace technisch höchste Qualität. Durch die eigene Virtualisierungstechnik von WebhostOne, kann der Kunde seine PHP.ini und HTTPD.conf selber nach belieben bearbeiten. So ist dieser nicht an die vom Provider vorgegeben Einstellungen gebunden. Außerdem bietet der Webspace beschränkten SSH Zugriff mit dem ein Kunde mit wenigen Vorkenntnissen auch nochmal Unfug anstellen kann.</p>
<p>Zum Support kann ich nur sagen, dass ich ihn nur wenige Male gebraucht habe, dieser aber immer höflich und schell war. An Downtimes kann ich mich kaum erinnern, wenn es welche gab, waren sie kurz und der Support gab schnell Auskunft.</p>
<p>Abschließend möchte ich noch sagen, dass ich absolut zufrieden mit WebhostOne bin und ich <em>leider</em> nicht viel schlechtes berichten kann. Ich kann wirklich jedem, der eine Extrawurst braucht und keinen Stress mit der Administrierung eines eigenen (v)Servers haben will, empfehlen.</p>
<p>Liebe Grüße,<br />
Marvin</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/erfahrungsberichte/erfahrungsbericht-webhostone-gute-erfahrungen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TeamSpeak 2 Sponsoring-Angebot</title>
		<link>http://php-friends.de/allgemein/teamspeak-2-sponsoring-angebot/</link>
		<comments>http://php-friends.de/allgemein/teamspeak-2-sponsoring-angebot/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 23:15:00 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=287</guid>
		<description><![CDATA[Guten Abend liebe Leser! Ich möchte euch auf unser kleines TeamSpeak 2 Sponsoring-Angebot aufmerksam machen, welches wir seit heute (bzw. jetzt schon wieder gestern) anbieten. Wie auch im Artikel erwähnt, ist dieses Sponsoring vollkommen unverbindlich und ihr geht keinerlei Verpflichtungen ein. Außerdem verlangen wir keine Gegenleistung, würden uns aber dennoch über Verlinkungen oder Empfehlungen freuen.]]></description>
			<content:encoded><![CDATA[<p>Guten Abend liebe Leser!</p>
<p>Ich möchte euch auf unser kleines TeamSpeak 2 Sponsoring-Angebot aufmerksam machen, welches wir seit heute (bzw. jetzt schon wieder gestern) anbieten. Wie auch im Artikel erwähnt, ist dieses Sponsoring vollkommen unverbindlich und ihr geht keinerlei Verpflichtungen ein. Außerdem verlangen wir keine Gegenleistung, würden uns aber dennoch über Verlinkungen oder Empfehlungen freuen. Weiteres entnehmt ihr bitte der Informationsseite.</p>
<p><a href="http://php-friends.de/sponsoring/" target="_blank">Unser TeamSpeak 2 Sponsoring-Angebot</a></p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/allgemein/teamspeak-2-sponsoring-angebot/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>logiprint.com</title>
		<link>http://php-friends.de/allgemein/logiprint-com/</link>
		<comments>http://php-friends.de/allgemein/logiprint-com/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 21:52:23 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Websites]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=235</guid>
		<description><![CDATA[Nach einer lange Pause, in diesem doch schon sehr verstaubten Blog,  möchte ich heute endlich wieder etwas veröffentlichen. Es hat sich in der Zwischenzeit ja doch schon viel getan. Ich meine, dass die Seite einen Google PageRank von 3 hat, worauf ich ungemein stolz bin. Der eigentlich Grund, weshalb mir diese Tatsache überhaupt aufgefallen ist,]]></description>
			<content:encoded><![CDATA[<p>Nach einer lange Pause, in diesem doch schon sehr verstaubten Blog,  möchte ich heute endlich wieder etwas veröffentlichen. Es hat sich in der Zwischenzeit ja doch schon viel getan. Ich meine, dass die Seite einen Google PageRank von 3 hat, worauf ich ungemein stolz bin.</p>
<p><span id="more-235"></span></p>
<p>Der eigentlich Grund, weshalb mir diese Tatsache überhaupt aufgefallen ist, ist Post von einer netten Internetdruckerei, die auf diesen Blog aufmerksam geworden ist. Logiprint (<a title="logiprint" href="http://logiprint.com" target="_blank">www.logiprint.com</a>) bieten mir ein paar Testangeboten an, um ihre Dienstleistung in Anspruch zu nehmen. Dies werde ich in den nächsten Tagen auf  jeden Fall zelebrieren und meine Erfahrungen auch in meinem weltbekannten Blog kundtun.</p>
<p>Ein lang verschollener Marvin</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/allgemein/logiprint-com/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[PHP-Performance] Ordner auslesen</title>
		<link>http://php-friends.de/php/php-performance-ordner-auslesen/</link>
		<comments>http://php-friends.de/php/php-performance-ordner-auslesen/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 00:10:37 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=207</guid>
		<description><![CDATA[Hallo User! Auch noch zur späten bzw frühen Stunde habe ich unermüdlich *gähn* getestet, ob glob() oder opendir() + Konsorten schneller ist. Das Ergebnis: Hier der Code: &#38;lt;?php $dir = dirname(__FILE__).&#38;quot;/&#38;quot;; $start = microtime(); for($i = 1;$i &#38;lt;= 1000; $i++) { $dirHandle = opendir($dir); while(($file = readdir($dirHandle)) !== FALSE) { echo &#38;quot;&#38;lt;p&#38;gt;Filename : &#38;lt;b&#38;gt;$file&#38;lt;/b&#38;gt;&#38;lt;/p&#38;gt;\n&#38;quot;; }]]></description>
			<content:encoded><![CDATA[<p>Hallo User!</p>
<p>Auch noch zur späten bzw frühen Stunde habe ich unermüdlich *gähn* getestet, ob glob() oder opendir() + Konsorten schneller ist. Das Ergebnis:</p>
<p><span id="more-207"></span></p>
<p>Hier der Code:</p>
<pre class="brush: php;">

&amp;lt;?php
$dir = dirname(__FILE__).&amp;quot;/&amp;quot;;

$start = microtime();

for($i = 1;$i &amp;lt;= 1000; $i++)
{
$dirHandle = opendir($dir);
while(($file = readdir($dirHandle)) !== FALSE)
{
echo &amp;quot;&amp;lt;p&amp;gt;Filename : &amp;lt;b&amp;gt;$file&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;\n&amp;quot;;
}
closedir($dirHandle);
}

$end = microtime();
$diff = $end-$start;
echo &amp;quot;.&amp;lt;p&amp;gt;Diese Seite wurde in $diff generiert&amp;lt;/p&amp;gt;\n&amp;quot;;

$start = microtime();

for($i = 1;$i &amp;lt;= 1000; $i++)
{
foreach(glob($dir.&amp;quot;*.*&amp;quot;) as $filename)
{
echo &amp;quot;&amp;lt;p&amp;gt; Filename : &amp;lt;b&amp;gt;&amp;quot;.basename($filename).&amp;quot;&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;;
}
}
$end = microtime();

$diff = $end-$start;
echo &amp;quot;.&amp;lt;p&amp;gt;Diese Seite wurde in $diff generiert&amp;lt;/p&amp;gt;\n&amp;quot;;

?&amp;gt;
</pre>
<p>Die Ausgabe ist zu lang deswegen kann ich sie hier nicht posten!</p>
<p><a href="http://snippets.php-friends.de/dir.php">[Live-Demo]</a></p>
<p>Strg+F -&gt; Suche nach generiert.</p>
<p>Eindeutig ist anders! Und wer liest bitten schön 3 Dateien 1000 mal aus (3*1000=3000 Dateien). Man kann also sagen, dass glob minimal langsamer ist, es sich aber kaum negativ auswirkt, obwohl glob vorher noch eine RegExp bearbeiten muss und damit viel umfangreicher als opendir ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/php-performance-ordner-auslesen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP-BBCode Klasse</title>
		<link>http://php-friends.de/php/php-bbcode-klasse-class/</link>
		<comments>http://php-friends.de/php/php-bbcode-klasse-class/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 18:34:15 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=193</guid>
		<description><![CDATA[Hier ist eine von mir geschrieben leicht erweiterbare PHP BBCode Klasse. Außerdem maskiert sie unnötige HTML Zeichen und ersetzt \n durch &#60;br /&#62;&#8217;s! Standartmäßig sind enthalten im PHP Script enthalten: &#60;a&#62;, &#60;b&#62;, &#60;img&#62;&#60;i&#62; und auch einen youtube BBCode: &#60;?php class BBCodeParser { private $BBCodesEasy = array(&#34;b&#34;, &#34;url&#34;, &#34;img&#34;, &#34;i&#34;, &#34;youtube&#34;); private $rawText = &#34;&#34;; public]]></description>
			<content:encoded><![CDATA[<p>Hier ist eine von mir geschrieben leicht erweiterbare PHP BBCode Klasse. Außerdem maskiert sie unnötige HTML Zeichen und ersetzt \n durch</p>
<p>&lt;br /&gt;&#8217;s!</p>
<p><span id="more-193"></span></p>
<p>Standartmäßig sind enthalten im PHP Script enthalten:</p>
<p>&lt;a&gt;, &lt;b&gt;, &lt;img&gt;&lt;i&gt; und auch einen youtube BBCode:</p>
<pre class="brush: php;">&lt;?php

class BBCodeParser
{
	private $BBCodesEasy = array(&quot;b&quot;, &quot;url&quot;, &quot;img&quot;, &quot;i&quot;, &quot;youtube&quot;);
	private $rawText = &quot;&quot;;

	public function __construct()
	{
		if(!is_array($this-&gt;BBCodesEasy))
		{
			trigger_error(&quot;Bitte trage die zu parsenden BBCodes ein&quot;);
		}
	}

	public function iniParse($rawText)
	{
		foreach($this-&gt;BBCodesEasy[0] as $key =&gt; $BBCode)
		{
			if(stripos($rawText, &quot;[&quot;.$BBCode.&quot;]&quot;) !== FALSE &amp;&amp; stripos($rawText, &quot;[/&quot;.$BBCode.&quot;]&quot;) !== FALSE)
			{
				return true;
			}
			continue;
		}
		return false;
	}

	public function parseText()
	{
		if($this-&gt;rawText == &quot;&quot;)
		{
			trigger_error(&quot;Diese Funktion muss erst durch iniParse() initialisert werden!&quot;);
		}
		$this-&gt;rawText = preg_replace(&quot;/\[b\](.*)\[\/b\]/isU&quot;, &quot;&lt;b&gt;$1&lt;/b&gt;&quot;, $this-&gt;rawText);
		$this-&gt;rawText = preg_replace(&quot;/\[i\](.*)\[\/i\]/isU&quot;, &quot;&lt;i&gt;$1&lt;/i&gt;&quot;, $this-&gt;rawText);
		$this-&gt;rawText = preg_replace(&quot;/\[img\](.*)\[\/img\]/isU&quot;, &quot;&lt;img src=\&quot;$1\&quot; alt=\&quot;\&quot; title=\&quot;\&quot; /&gt;&quot;, $this-&gt;rawText);
		$this-&gt;rawText = preg_replace(&quot;/\[url\=(.*)\](.*)\[\/url\]/isU&quot;, &quot;&lt;a href=\&quot;$1\&quot;&gt;$2&lt;/a&gt;&quot;, $this-&gt;rawText);
		$this-&gt;rawText = preg_replace(&quot;/\[youtube\](.*)\[\/youtube\]/isU&quot;, &quot;&lt;object width=\&quot;560\&quot; height=\&quot;340\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/$1\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowFullScreen\&quot; value=\&quot;true\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowscriptaccess\&quot; value=\&quot;always\&quot;&gt;&lt;/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/$1\&quot; type=\&quot;application/x-shockwave-flash\&quot; allowscriptaccess=\&quot;always\&quot; allowfullscreen=\&quot;true\&quot; width=\&quot;560\&quot; height=\&quot;340\&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&quot;, $this-&gt;rawText);
		return $this-&gt;rawText;
	}

	public function Parser($rawText)
	{
		$this-&gt;rawText = htmlentities($rawText);
		if(!$this-&gt;iniParse($this-&gt;rawText)) return $this-&gt;rawText;
		$this-&gt;parseText();
		$this-&gt;rawText = nl2br($this-&gt;rawText);
		return $this-&gt;rawText;
	}
}

$text = &quot;[URL=http://php-friends.de]PHP-Friends[/URL][I][B]Text[/B][B]Text2[/B][/I]\n\n\n[youtube]bGBOKtaGlyA[/youtube]&quot;;
$bbcode = new BBCodeParser();
$text2 = &quot;ABC&quot;;
echo $bbcode-&gt;Parser($text2);
echo $bbcode-&gt;Parser($text);
?&gt;
</pre>
<p>Es sollte eigentlich selbstklärend sein. Nur auf den Youtube BBCode werde ich näher eingehen:</p>
<p>Um diesen zu verwenden müsst ihr den v= Teil aus dem Link zwischen die Tags kopieren. Bei diesem Link:</p>
<p><object width="500" height="400"><param name="movie" value="http://www.youtube.com/v/LLjj4xvx6zk&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/LLjj4xvx6zk&#038;fs=1" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>wäre es LLjj4xvx6zk. Also</p>
<pre class="brush: plain;">[youtube]LLjj4xvx6zk[/youtube]</pre>
<p>Bei Fragen etc. wie immer Kommentar oder eMail!</p>
<p>Download:  <a href="http://php-friends.de/wp-content/uploads/2009/11/BBcode.zip" target="_self">PHP BBCode Klasse/Class</a></p>
<p>*UPDATE 21.11.2009: Peinlicher Fehler im Script entdeckt und verbessert*</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/php-bbcode-klasse-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit PHP alle Dateien in einem Ordner anzeigen?</title>
		<link>http://php-friends.de/php/php-alle-dateien-in-ordner-anzeigen/</link>
		<comments>http://php-friends.de/php/php-alle-dateien-in-ordner-anzeigen/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 13:06:42 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=189</guid>
		<description><![CDATA[Ihr wollte alle Dateien in einem Verzeichnis auslesen? Ohne dieses opendir(), readdir() blabla? Es geht nämlich genauso einfach mit glob()! Hier ist der Code dafür. Einfach die gewünschten Variablen anpassen! &#60;?php // PHP Environment ini_set(&#34;display_errors&#34;, 1); error_reporting(E_ALL ^ E_STRICT); $dir = dirname(__FILE__).&#34;/&#34;; // Pfad zum Ordner der ausgelesen werden soll //$dir = dirname(&#38;amp;quot;../&#38;amp;quot;).&#38;amp;quot;/&#38;amp;quot;; $filePattern =]]></description>
			<content:encoded><![CDATA[<p>Ihr wollte alle Dateien in einem Verzeichnis auslesen? Ohne dieses opendir(), readdir() blabla? Es geht nämlich genauso einfach mit glob()!<br />
<span id="more-189"></span></p>
<p>Hier ist der Code dafür. Einfach die gewünschten Variablen anpassen!</p>
<pre class="brush: php;">
&lt;?php
// PHP Environment
ini_set(&quot;display_errors&quot;, 1);
error_reporting(E_ALL ^ E_STRICT);

$dir = dirname(__FILE__).&quot;/&quot;; // Pfad zum Ordner der ausgelesen werden soll
//$dir = dirname(&amp;amp;quot;../&amp;amp;quot;).&amp;amp;quot;/&amp;amp;quot;;

$filePattern = &quot;*&quot;;
$ext = &quot;*&quot;; // Falls ihr nur bestimmte Dateiendunge ausgelesen haben wollt. Statt dem Sternchen einfach den gewünschten Wert setzen.

foreach(glob($dir.$filePattern.&quot;.&quot;.$ext) as $filename)
{
echo &quot;.&lt;p&gt;&lt;strong&gt;&amp;amp;quot;.basename($filename).&amp;amp;quot; | &amp;amp;quot;.filesize($filename).&amp;amp;quot;&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;\n&amp;amp;quot;;
}

?&amp;amp;gt;
</pre>
<p><a href="http://snippets.php-friends.de/readdir.php" target="_blank">[Live-Demo]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/php-alle-dateien-in-ordner-anzeigen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[POOTMS] 3. Zwischenbericht (neuer Screenshot!)</title>
		<link>http://php-friends.de/php/pootms-dritter-zwischenbericht-screenshot-neu/</link>
		<comments>http://php-friends.de/php/pootms-dritter-zwischenbericht-screenshot-neu/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 22:28:30 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=179</guid>
		<description><![CDATA[Guten Abend (oder gute Nacht) liebe Leser, Ich bin heute extrem weit gekommen und das Frontend ist so gut wie fertig! Es fehlen noch ein UserCP (eigene Seiten verwalten) und eine SearchEngine. Vielleicht noch ein paar andere Kleinigkeiten in Form von Sicherheitupdates. Bevor ich das Backend programmiere werde ich fleißige Alpha- / Beta-Tester suchen, die]]></description>
			<content:encoded><![CDATA[<p>Guten Abend (oder gute Nacht) liebe Leser,</p>
<p>Ich bin heute extrem weit gekommen und das Frontend ist so gut wie fertig! Es fehlen noch ein UserCP (eigene Seiten verwalten) und eine SearchEngine. Vielleicht noch ein paar andere Kleinigkeiten in Form von Sicherheitupdates. Bevor ich das Backend programmiere werde ich fleißige Alpha- / Beta-Tester suchen, die das momentane System auf Stabilität prüfen würden. Außerdem werde ich morgen wichtige Informationen zum POOTMS hinzufügen (Features).</p>
<p>Ein kleiner Trost dafür, dass das POOTMS immer noch nicht fertig ist, ist vielleicht dieser Screenshot vom UserCP:</p>
<p><a rel="attachment wp-att-181" href="http://php-friends.de/php/pootms-dritter-zwischenbericht-screenshot-neu/attachment/blog_usercp-2/"><img class="aligncenter size-medium wp-image-181" title="blog_usercp" src="http://php-friends.de/wp-content/uploads/2009/07/blog_usercp1-300x159.png" alt="blog_usercp" width="300" height="159" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/pootms-dritter-zwischenbericht-screenshot-neu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[POOTMS] 2. Zwischenbericht (mit Screenshot!)</title>
		<link>http://php-friends.de/php/pootms-zweiter-zwischenbericht-screenshot/</link>
		<comments>http://php-friends.de/php/pootms-zweiter-zwischenbericht-screenshot/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 14:20:48 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=153</guid>
		<description><![CDATA[Hallo liebe Leser, bestimmt habt ihr schon gedacht, dass das Projekt POOTMS (ja &#8211; ist ein lustiger Name, dafür aber einzigartig!) bereits wieder eingefroren sei. Aber es war wider erwarten doch ein bisschen schwieriger, die ganze Libraries zu programmieren, vor allem weil ich mich dann mitten während der Projektprogrammierung doch noch für ein Gruppensystem entschieden]]></description>
			<content:encoded><![CDATA[<p>Hallo liebe Leser,</p>
<p>bestimmt habt ihr schon gedacht, dass das Projekt POOTMS (ja &#8211; ist ein lustiger Name, dafür aber einzigartig!) bereits wieder eingefroren sei. Aber es war wider erwarten doch ein bisschen schwieriger, die ganze Libraries zu programmieren, vor allem weil ich mich dann mitten während der Projektprogrammierung doch noch für ein Gruppensystem entschieden hatte&#8230;<br />
<span id="more-153"></span></p>
<p>Mit einer Alpha oder einer Beta kann ich euch leider immer noch nicht beglücken.<br />
Nächstes Wochenende.<br />
Vielleicht.</p>
<p>Allerdings kann ich euch einen Screenshot bieten. Das schöne Design habe ich aus einer Open Source-Quelle und kann es somit für das Projekt verwenden. Vielen Dank auch an <a href="http://famfamfam.com/" target="_blank">FamFamFam</a> für die wundervollen Icons! <img src='http://php-friends.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><div id="attachment_154" class="wp-caption aligncenter" style="width: 310px"><a rel="attachment wp-att-154" href="http://php-friends.de/php/pootms-zweiter-zwischenbericht-screenshot/attachment/pootms_snapshot/"><img class="size-full wp-image-154" title="pootms_snapshot" src="http://php-friends.de/wp-content/uploads/2009/07/pootms_snapshot.png" alt="pootms_snapshot" width="300" height="150" /></a><p class="wp-caption-text">pootms_snapshot</p></div><br />
[Kleines Design-Update]<br />
<a href="http://php-friends.de/php/pootms-zweiter-zwischenbericht-screenshot/attachment/pootms_snap_2/" rel="attachment wp-att-172"><img src="http://php-friends.de/wp-content/uploads/2009/07/pootms_snap_2-300x161.png" alt="pootms_snap_2" title="pootms_snap_2" width="300" height="161" class="aligncenter size-medium wp-image-172" /></a></p>
<p>Bis zum nächsten Update! <img src='http://php-friends.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Marvin</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/pootms-zweiter-zwischenbericht-screenshot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL-Volltext Suche</title>
		<link>http://php-friends.de/php/mysql-volltext-suche-tipp/</link>
		<comments>http://php-friends.de/php/mysql-volltext-suche-tipp/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 09:21:00 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=149</guid>
		<description><![CDATA[Ihr seid mit der MySQL-internen Suche nicht zufrieden? Ihr wollt keine Indexe mehr setzen und euren Usern eine bessere Suchemaschine anbieten? Ich habe eine Lösung für dieses &#8220;Problem&#8221; gefunden. Auf phpbar findet ihr ein schöne Übersicht! Einfach mal ausprobieren. Außerdem müsste unter &#8220;Diskussion&#8221; schon eine PHP-Klasse verfügbar sein.]]></description>
			<content:encoded><![CDATA[<p>Ihr seid mit der MySQL-internen Suche nicht zufrieden? Ihr wollt keine Indexe mehr setzen und euren Usern eine bessere Suchemaschine anbieten?<br />
Ich habe eine Lösung für dieses &#8220;Problem&#8221; gefunden. Auf <a href="http://www.phpbar.de/w/Volltextsuche">phpbar</a> findet ihr ein schöne Übersicht! Einfach mal ausprobieren. Außerdem müsste unter &#8220;Diskussion&#8221; schon eine PHP-Klasse verfügbar sein. <img src='http://php-friends.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/mysql-volltext-suche-tipp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mehrere MySQL-Anwendungen simulieren</title>
		<link>http://php-friends.de/php/viele-mysql-anwendungen-simulieren/</link>
		<comments>http://php-friends.de/php/viele-mysql-anwendungen-simulieren/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 13:54:49 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Websites]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=144</guid>
		<description><![CDATA[Bei meinen täglichen Netzaktivitäten bin ich auf eine interessante Seite gestoßen, die beschreibt wie man mehrere MySQL-Anwendungen simuliert. Eigentlich recht einfach: Heddesheimer-Blog: Mehrplatzfähige MySQL-Anwendungen in PHP testen Während der sleep()-Phase einfach das gleiche Script nochmal im Browser (oder in der Shell) aufrufen. So einfach ist das Simulieren mehrerer Besucher.]]></description>
			<content:encoded><![CDATA[<p>Bei meinen täglichen Netzaktivitäten bin ich auf eine interessante Seite gestoßen, die beschreibt wie man mehrere MySQL-Anwendungen simuliert.<br />
<span id="more-144"></span></p>
<p>Eigentlich recht einfach:<br />
<a href="http://www.heddesheimer.de/blog/index.php/2006/01/27/mehrplatzfahige_mysql_anwendungen_in_php" target="_blank">Heddesheimer-Blog: Mehrplatzfähige MySQL-Anwendungen in PHP testen</a></p>
<p>Während der sleep()-Phase einfach das gleiche Script nochmal im Browser (oder in der Shell) aufrufen. So einfach ist das Simulieren mehrerer Besucher. <img src='http://php-friends.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/viele-mysql-anwendungen-simulieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1. Zwischenbericht: POOTMS!</title>
		<link>http://php-friends.de/php/zwischenbericht-pootms-update/</link>
		<comments>http://php-friends.de/php/zwischenbericht-pootms-update/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 20:50:09 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=141</guid>
		<description><![CDATA[Momentan läuft es ganz gut! Habe die Core-, Toplist- und User-Klassen soweit fertig. Feile momentan an dem Rechte-System. Werden wahrscheinlich heute Abend oder morgen damit fertig. Dann wäre die Library fertig. Anschließend alles zusammenwürfeln und ein schönes Design reinmachen. Und voila &#8211; fertig! Hmpf. So einfach wird es wohl nicht. Liebe Grüße, Marvin]]></description>
			<content:encoded><![CDATA[<p>Momentan läuft es ganz gut! Habe die Core-, Toplist- und User-Klassen soweit fertig. Feile momentan an dem Rechte-System. Werden wahrscheinlich heute Abend oder morgen damit fertig. Dann wäre die Library fertig. Anschließend alles zusammenwürfeln und ein schönes Design reinmachen. Und voila &#8211; fertig! Hmpf. So einfach wird es wohl nicht. <img src='http://php-friends.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Liebe Grüße,<br />
Marvin</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/zwischenbericht-pootms-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: Interner Syntax-Highlighter</title>
		<link>http://php-friends.de/php/internes-syntax-highlighting-php/</link>
		<comments>http://php-friends.de/php/internes-syntax-highlighting-php/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 08:58:05 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=123</guid>
		<description><![CDATA[Wusstet ihr schon, dass PHP einen internen Highlighter besitzt? Nein? Stichwort: highlight_string() sowie highlight_file()! Mehr zur simplen Anwendung: &#60;?php highlight_string(&#34;&#60;?php echo 'Banane'; ?&#62;&#34;); ?&#62; Trotzdem denke ich, dass dieser interne Highlighter nicht so schön ist, wie der von WordPress (leider finde ich den Namen des Autors von diesem Plugin nicht mehr). Außerdem scheint er nicht]]></description>
			<content:encoded><![CDATA[<p>Wusstet ihr schon, dass PHP einen internen Highlighter besitzt? Nein?<br />
Stichwort: <a href="http://de.php.net/manual/de/function.highlight-string.php" target="_blank">highlight_string()</a> sowie <a href="http://de.php.net/manual/de/function.highlight-string.php" target="_blank">highlight_file()</a>!<br />
Mehr zur simplen Anwendung:<br />
<span id="more-123"></span></p>
<pre class="brush: php;">
&lt;?php
highlight_string(&quot;&lt;?php echo 'Banane'; ?&gt;&quot;);
?&gt;
</pre>
<p>Trotzdem denke ich, dass dieser interne Highlighter nicht so schön ist, wie der von WordPress (leider finde ich den Namen des Autors von diesem Plugin nicht mehr). Außerdem scheint er nicht mehr XHTML-konform zu sein. Dennoch sind es zwei nette Funktionen. <img src='http://php-friends.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/internes-syntax-highlighting-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3.0</title>
		<link>http://php-friends.de/php/php-5-3-0-release/</link>
		<comments>http://php-friends.de/php/php-5-3-0-release/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 08:49:24 +0000</pubDate>
		<dc:creator>Marvin Strauch</dc:creator>
				<category><![CDATA[Nachrichten & Interessantes]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://php-friends.de/?p=121</guid>
		<description><![CDATA[Seit ein paar Tagen ist es nun soweit: der Release von PHP 5.3.0! Die wichtigste Neuerung ist &#8211; meiner Meinung nach &#8211; der goto() &#8211; Befehl, damit kann nämlich der &#8220;Spaghetti-Code&#8221; revolutioniert werden! Demnächst wird mein Provider wahrscheinlich auch updaten (hoffe ich zumindest mal). Weiterhin müssen wir uns wohl noch ein bisschen auf PHP 6]]></description>
			<content:encoded><![CDATA[<p>Seit ein paar Tagen ist es nun soweit: der Release von <a href="http://www.php.net/archive/2009.php#id2009-06-30-1" target="_blank">PHP 5.3.0</a>!<br />
Die wichtigste Neuerung ist &#8211; meiner Meinung nach &#8211; der goto() &#8211; Befehl, damit kann nämlich der &#8220;Spaghetti-Code&#8221; revolutioniert werden! Demnächst wird mein Provider wahrscheinlich auch updaten (hoffe ich zumindest mal). Weiterhin müssen wir uns wohl noch ein bisschen auf PHP 6 gedulden.</p>
]]></content:encoded>
			<wfw:commentRss>http://php-friends.de/php/php-5-3-0-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
