[PHP] BBcode voor youtube filmpjes

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Bedoeling is dat leden kunnen doen wanneer ze een youtube url typen het filmpje included wordt

ik heb de volgende code

code:
1
2
3
4
5
$r_bericht = preg_replace( '/http:\/\/www.youtube.com\/watch\?v=(.*?)/i', '<object width="425"
height="350"><param name="movie" value="http://www.youtube.com/v/\\1"></param><param
name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\\1"
type="application/x-shockwave-flash" wmode="transparent" width="425"
height="350"></embed></object>', $r_bericht);


ik krijg raar maar waar als resultaat

code:
1
2
3
4
5
<object width="425" height="350"><param name="movie"
value="http://www.youtube.com/v/"></param><param name="wmode"
value="transparent"></param><embed src="http://www.youtube.com/v/"
type="application/x-shockwave-flash" wmode="transparent" width="425"
height="350"></embed></object>iHXwlEM9-fg


Waarom geeft hij de variable achteraan weer? en niet op de plaats waar het moet :/

Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

Omdat je geen delimiter hebt aangegeven voor het einde van je variabele, zet daar eens een $ neer bijvoorbeeld. ;)

PHP:
1
preg_replace( '/http:\/\/www.youtube.com\/watch\?v=(.*?)$/i', ...


Met Cheatah, zoek eens op greedy, ik merk dat mijn regex skills ook alweer aardig onder het stof zitten. :p

[ Voor 49% gewijzigd door --MeAngry-- op 10-05-2007 20:54 ]

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

Verwijderd

(.*?) matcht altijd een lege string als er niks meer achteraan komt hè. Je wilt eigenlijk alle tekens die nog wel bij een YouTube url zouden mogen, en dat de regex greedy is.

/http:\/\/www.youtube.com\/watch\?v=(\w+)/

Het is handiger om andere delimiters te gebruiken voor URL's, bijvoorbeeld het pipe teken, of een tilde (als deze toch niet in je URL's voorkomt).

|http://www\.youtube\.com/watch\?v=(\w+)|

Vergeet ook niet de punten in de hostname te escapen.
--MeAngry-- schreef op donderdag 10 mei 2007 @ 20:50:
Omdat je geen delimiter hebt aangegeven voor het einde van je variabele, zet daar eens een $ neer bijvoorbeeld. ;)
Dat lijkt me niet erg slim. Matchen tot het eind van de regel/de input. Je wilt alleen matchen tot hoever het nog bij de URL kan horen. Analyseer gewoon wat YouTube gebruikt, volgens mij zijn dat 11 word characters. Maar dat zou ik niet zeker weten, vandaar een onbeperkt aantal word characters.

Daarnaast is $ helemaal geen delimiter, alleen een meta character. In dat voorbeeld zijn forward slashes (/) de delimiters.

[ Voor 74% gewijzigd door Verwijderd op 10-05-2007 21:36 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
<noob mode> ik ken wel PHP maar niet in de zin van wat delimiters zijn en waar ik die moet zetten :s sorry </noob mode>

edit: Ok, nu heb ik het door _/-\o_

[ Voor 14% gewijzigd door Verwijderd op 10-05-2007 20:56 ]


Acties:
  • 0 Henk 'm!

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

Misschien heb je hier wat aan, daar kan je de code zo wegslopen...

Ik weet alles van niks
Vind Excel ongelovelijk irritant.