[Algemeen/PHP] Hulp nodig met regular expressions

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Maghiel
  • Registratie: Maart 2004
  • Laatst online: 17:09
Voorbeeld tekst:

code:
1
2
3
4
'''Leona Louise Lewis''' (born [[3 April]] [[1985]]) is an [[England|English]] [[singer-songwriter]] and winner of the [[The X Factor (UK series 3)|third series]] of [[UK]] television talent show ''[[The X Factor (UK)|The X Factor]]''. Her UK debut single, "[[A Moment Like This#Leona Lewis version|A Moment Like This]]", was released in December 2006, breaking a world record after it was downloaded over 50,000 times within 30 minutes.<ref name="leonabreaksworldrecord"/>
Her second single, "[[Bleeding Love]]", was the biggest-selling single of 2007 in the [[United Kingdom]], topped over thirty national singles charts and became a number one single on the first week in [[France]] on [[March 22]] and number one in the [[United States|US]] on [[April 5]], [[2008]].<ref>[http://uk.news.launch.yahoo.com/dyna/article.html?a=/080327/340/hwc52.html&e=l_news_dm Yahoo! Music News, March 27, 2008]</ref><ref name="firstnumberone2">[http://www.soundgenerator.com/viewArticle.cfm?ArticleID=18679 SoundGenerator.com]</ref> 
Her debut album, ''[[Spirit (Leona Lewis album)|Spirit]]'', was released in Europe in November 2007, and became the fastest-selling debut album ever in both the United Kingdom and [[Republic of Ireland|Ireland]].<ref name="highspirits"/><ref name="recorddebut"/> Released in [[North America]] in April 2008, ''Spirit'' debuted at number one in the US [[Billboard 200]] chart and made Lewis the first [[United Kingdom|British]] solo artist to top the chart with a debut album.<ref>[http://latimesblogs.latimes.com/extendedplay/2008/04/leona-lewis-deb.html Leona Lewis debuts at No. 1, sets U.S. chart record : Extended Play : Los Angeles Times<!-- Bot generated title -->]</ref><ref>[http://news.bbc.co.uk/1/hi/entertainment/7350282.stm BBC NEWS | Entertainment | Leona album smashes into US chart<!-- Bot generated title -->]</ref><ref>[http://www.billboard.com/bbcom/news/article_display.jsp?vnu_content_id=1003789988 Leona Lewis Makes Big Splash Atop Billboard 200<!-- Bot generated title -->]</ref>
With her album reaching number one in four continents and nine countries, Lewis has had the most successful launch of any television talent show contestant ever.<ref name="prnewswire"/>


Nou is het de bedoeling dat alle
<ref name="" /> tags eruit gehaald worden.
En alle <ref>[http://url.com]</ref] omgezet wordt in een hyperlink.

Dit is wat van mijn geprutst, maar het geeft niet helemaal het gewenste resultaat :p
En ja ik weet het, moet een keer een regex boek kopen ;)

code:
1
2
3
4
5
6
7
8
// Replace <ref>[url]</ref> with hyperlinks
$biographyText = preg_replace('/\&lt;ref(.*?)\&gt;/\[(.?*)/\]\&lt;\/ref\&gt;/is', '<a href="$2" target="_blank">$2</a>', $biographyText);

// Remove <ref> tags
$biographyText = preg_replace('/\[ref\](.*?)\[\/ref\]/is', '', $biographyText);
$biographyText = preg_replace('/\&lt;ref\&gt;(.*?)\&lt;\/ref\&gt;/is', '', $biographyText);
$biographyText = preg_replace('/\&lt;ref(.*?)\&gt;(.*?)\&lt;\/ref\&gt;/is', '', $biographyText);
$biographyText = preg_replace('/\&lt;ref name="(.*?)"\/\&gt;/is', '', $biographyText);

Acties:
  • 0 Henk 'm!

  • pkuppens
  • Registratie: Juni 2007
  • Laatst online: 18-09 07:32
Een boek helpt hier niet aan. Online documentatie zat als je het weet te vinden maar vooral als je weet waar je op moet zoeken.

Tip. print de gematchte, tussentijdse strings eens, bedenk wat je had verwacht. En ga eens aan het debuggen.
En kom dan terug met specifiekere problemen.

Het lijkt er wel op dat je weet hoe je de niet-greedy match doet, of is dat copy-paste geluk?

Off-topic.. Doe je wel dingen die volgens de copyright wet mogen?? ;)

Acties:
  • 0 Henk 'm!

  • Maghiel
  • Registratie: Maart 2004
  • Laatst online: 17:09
pkuppens schreef op maandag 07 juli 2008 @ 21:27:
Een boek helpt hier niet aan. Online documentatie zat als je het weet te vinden maar vooral als je weet waar je op moet zoeken.

Tip. print de gematchte, tussentijdse strings eens, bedenk wat je had verwacht. En ga eens aan het debuggen.
En kom dan terug met specifiekere problemen.

Het lijkt er wel op dat je weet hoe je de niet-greedy match doet, of is dat copy-paste geluk?

Off-topic.. Doe je wel dingen die volgens de copyright wet mogen?? ;)
Dank je voor de tip, ga ik morgen doen, m'n werkdag zit er nu op ;)

Ik weet niet wat een greedy-match is, inderdaad copy-paste geluk. Heb al zat bbcode achtige dingen gemaakt met vriend google, maar omdat hier een <ref name="foo" /> tag inzit, weet ik even geen raad meer.

Misschien is dat een specifiekere vraag, hoe vervang ik <ref name="foo" />?

En ja, het mag volgens de copyright wet ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Ben je bekend met de tool 'Regex Coach'? Klein gratis tooltje waar je een stuk makkelijker regexen kunt schrijven, de tool realtime zien wat je regex matcht.
Niet meteen antwoord op je vraag maar ik vind het een stuk makkelijker werken dan zo uit het hoofd :).

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
* ValHallASW wijst naar zn signature

Zo te zien komt je tekst van wikipedia. Daar gebruiken ze MediaWiki... is het al in je opgekomen om gewoon die parser te gebruiken?
Oh, en houd even rekening met copyright. Netjes GFDL + linkje terug of lijst met bijdragers.