<?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>Advanced Programming Stories &#187; acronym</title>
	<atom:link href="http://developstories.gr/tag/acronym/feed/" rel="self" type="application/rss+xml" />
	<link>http://developstories.gr</link>
	<description>advanced web development techniques &#38; reverse engineering stories</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:57:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Php Acronym Replace</title>
		<link>http://developstories.gr/php/php-acronym-replace/</link>
		<comments>http://developstories.gr/php/php-acronym-replace/#comments</comments>
		<pubDate>Sun, 25 May 2008 09:52:30 +0000</pubDate>
		<dc:creator>thek</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[acronym]]></category>

		<guid isPermaLink="false">http://developstories/?p=18</guid>
		<description><![CDATA[Χρειαζόμουν ένα acronym replace utility για να το ενσωματώσω σε ένα site. Όπως κάθε έξυπνος προγραμματιστής, ψάχνει πρώτα στο google. Τι γίνεται όμως όταν αυτό που βρίσκει δεν τον ικανοποιεί. Προσπαθεί να το φτιάξει μόνος του.
Έτσι λοιπόν ξεκίνησα να σκέφτομαι τι θα μπορούσα να χρησιμοποιήσω ώστε να πετύχω το καλύτερο δυνατό αποτέλεσμα. Στην αρχή σκέφτηκα [...]]]></description>
			<content:encoded><![CDATA[<p>Χρειαζόμουν ένα <a href="http://www.w3schools.com/tags/tag_acronym.asp">acronym</a> replace utility για να το ενσωματώσω σε ένα site. Όπως κάθε έξυπνος προγραμματιστής, ψάχνει πρώτα στο <a href="http://www.google.gr/search?sourceid=navclient&amp;ie=UTF-8&amp;q=acronym+replace+php">google</a>. Τι γίνεται όμως όταν αυτό που βρίσκει δεν τον ικανοποιεί. Προσπαθεί να το φτιάξει μόνος του.</p>
<p>Έτσι λοιπόν ξεκίνησα να σκέφτομαι τι θα μπορούσα να χρησιμοποιήσω ώστε να πετύχω το καλύτερο δυνατό αποτέλεσμα. Στην αρχή σκέφτηκα να κάνω parse το html, να βρίσκω τα κείμενα ανάμεσα στα tags, και να κάνω replace τα acronyms. Άκυρη η προσπάθεια, πολλά προβλήματα, ήθελε πολλούς ελέγχους. Αποφάσισα ότι πρέπει να κινηθώ προς αυτήν την κατεύθυνση, άλλα με άλλο τρόπο parsing.</p>
<p>Έτσι μου ήρθε η ιδέα να χρησιμοποιήσω τον <a href="http://www.php.net/xml">xml parser</a> του php module <a href="http://expat.sourceforge.net/">expat</a>. Το αποτέλεσμα καταπληκτικό, απλά έπαιρνε υπόψη του, μόνο το πρώτο block από tags. Έπρεπε να βρω γιατί σταματούσε, και δεν συνέχιζε και στα επόμενα. Μετά από ώρες ψαξίματος, κατάλαβα ότι του έλειπε ένα <a href="http://en.wikipedia.org/wiki/Document_Type_Definition">dtd</a>, για να καταλάβει ο parser με τι τύπο xml (<a href="http://www.w3.org/QA/2002/04/valid-dtd-list.html">doctype</a>) έχει να κάνει.</p>
<p>Έτσι του πρόσθεσα ότι είναι <a href="http://en.wikipedia.org/wiki/XHTML">xhtml</a>. Bingo επιτέλους πάρσαρε όλα τα blocks που είχε το content. Βέβαια τα προβλήματα δεν σταμάτησαν εδώ, ενώ έδειχναν ότι όλα είναι ok, ξαφνικά διαπίστωσα ότι χαρακτήρες όπως &amp;,.! κτλ, εξαφανίστηκαν. Άντε πάλι googling… Η λύση ήρθε από το <a href="http://www.w3.org/">W3C</a>, λείπανε τα <a href="http://www.w3.org/TR/REC-html40/sgml/entities.html">entities</a>, από το dtd. Πρόσθεσα και τα entities που με ενδιαφέρανε και το αποτέλεσμα, super! Τέλος για γίνει καλύτερο, πρόσθεσα στα replace όλες τις περιπτώσεις με τα σημεία στίξης. Με ένα σύστημα <a href="http://www.phpclasses.org/browse/class/28.html">cache</a>, για μεγαλύτερη ταχύτητα, το replace για τα acronyms έπαιξε καταπληκτικά, καλύπτοντας όλες τις περιπτώσεις που είχα στο site.</p>
<p>Με αυτό το utility κατάφερα εκτός των άλλων, να κατασκευάσω και ένα μικρό <a href="http://validator.w3.org/">xhtml validator</a>, γιατί αν υπάρχει έστω και ένα πρόβλημα στο html, βρίσκει το error ο parser, και σταματάει η εκτέλεση του. Αυτό το utility, το χρησιμοποιήσαμε στην <a href="http://www.netwerk.gr/">Netwerk</a> και προσθέσαμε στο cms μας την δυνατότητα για <a href="http://www.maxleitch.com/2008/03/10/8-keys-for-on-page-seo/">inner linking</a>.</p>
<p>Καθώς έγγραφα το post σκεφτικά, δεν βάζω το utility στo phpclasses ? <a href="http://www.phpclasses.org/browse/package/4599.html">http://www.phpclasses.org/browse/package/4599.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://developstories.gr/php/php-acronym-replace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
