Ik ben een beetje lekker aan het hobbyen en zit met een probleempje.
Ik heb een XML/RSS die ik uitlees in een functie, maar voordat hij deze opslaat wil ik dat hij de titels in de xml aanpast. Ik wil graag het stukje met brackets weg hebben en de tekst die erna komt klein hebben omdat ze nu alleen maar uit hoofdletters bestaan. De XML ziet er ongeveer zo uit:
Dit is de code die ik tot nu toe heb en waarmee het me niet lukt:
Helaas werkt het niet. Waar ik ook aan had gedacht is om preg_replace_callback als volgt te gebruiken:
Ik kom er zodoende dus niet helemaal uit, maar ik zie vast iets over het hoofd, denk in de verkeerde richting of kan het ook op een totaal andere manier? Thanks!
Ik heb een XML/RSS die ik uitlees in een functie, maar voordat hij deze opslaat wil ik dat hij de titels in de xml aanpast. Ik wil graag het stukje met brackets weg hebben en de tekst die erna komt klein hebben omdat ze nu alleen maar uit hoofdletters bestaan. De XML ziet er ongeveer zo uit:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <item> <title>[ details ] DIT IS DE TITEL</title> <description><![CDATA[Dit is de omschrijving van het object]]> </description> <link>http://www.website.nl/</link> <guid>http://www.website.nl/</guid> <pubDate>Thu, 18 Mei 2012 22:51:06 +0200</pubDate> </item> <item> <title>[ details ] DIT IS OOK EEN TITEL</title> <description><![CDATA[Dit is de omschrijving van het tweede object]]> </description> <link>http://www.website.nl/</link> <guid>http://www.website.nl/</guid> <pubDate>Thu, 19 Mei 2012 22:51:06 +0200</pubDate> </item> |
Dit is de code die ik tot nu toe heb en waarmee het me niet lukt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <? $content = file_get_contents($this->rssadres/); function hoofdletters($title) { $smallwordsarray = array( 'of','a','the','and','an','or','nor','but','is','if','then','else','when', 'at','from','by','on','off','for','in','out','over','to','into','with' ); $words = explode(' ', $title); foreach ($words as $key => $word) { if ($key == 0 or !in_array($word, $smallwordsarray)) $words[$key] = ucwords(strtolower($word)); } $newtitle = implode(' ', $words); return $newtitle; } preg_match_all("/\<title\>(.*?)\<\/title\>/", $content, $gevonden); $vervangsels = hoofdletters($gevonden); $content = preg_replace("/\<title\>(.*?)\<\/title\>/", $vervangsels, $content); ?> |
Helaas werkt het niet. Waar ik ook aan had gedacht is om preg_replace_callback als volgt te gebruiken:
PHP:
1
| preg_replace_callback('/\<title\>(.*?)\<\/title\>/', 'hoofdletters', $content)."</pre> |
Ik kom er zodoende dus niet helemaal uit, maar ik zie vast iets over het hoofd, denk in de verkeerde richting of kan het ook op een totaal andere manier? Thanks!
[ Voor 7% gewijzigd door Tweaqer op 20-05-2012 02:44 ]