Jump to content

bbcode embed video youtube, vimeo


Леший
 Share

Recommended Posts

Sveiki!

 

Vajag uztaisīt embed video. Tiek izmantots ckeditor un plugins, kurā var iemest youtube vai vimeo linku, youtube shortlinku vai youtube embed.

Tas, kas ir iemests, tiek ielikts editorā, iekš [media] tega.

Problēma ir ar attēlošanu. Pašlaik bbcode parsēšanai tiek izmantots preg_replace:

$code = array(

 "/\[b\](.*?)\[\/b\]/is" => "<strong>$1</strong>",
 "/\[i\](.*?)\[\/i\]/is" => "<i>$1</i>",
 "/\[url\=(.*?)\](.*?)\[\/url\]/is" => "<a href='$1'>$2</a>",
 "/\[url\](.*?)\[\/url\]/is" => "<a href='$1'>$1</a>",
 "/\[list\=(.*?)\](.*?)\[\/list\]/is" => "<ol>$2</ol>",
 "/\[list\](.*?)\[\/list\]/is" => "<ul>$1</ul>",
 "/\[\*\](.*?)\n/is" => "<li>$1</li>",

 "/\[media\].*?vimeo\.com\/([0-9]+)\[\/media\]/is" => '<iframe src="http://player.vimeo.com/video/$1" width="415" height="315" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>',
 "/\[media\].*?youtube\..*v=([^&]+).*?\[\/media\]/is" => '<iframe width="415" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>',
 "/\[media\].*?youtu\.be\/([\w-]{11}).*?\[\/media\]/is" => '<iframe width="415" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>',
 "/\[media\].*?youtube\..*\/embed\/([\w-]{11}).*?\[\/media\]/is" => '<iframe width="415" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>',
 "/\n/" => "<br />",
);
return preg_replace(array_keys($code), array_values($code), $text);

Un viss ok rādās, ja video ir salikti tādā secībā, kādā ir aprakstīts tajā masīvā, tas ir, ja ielikt sākumā vimeo, pēc tam youtube short, piemēram:

[media]http://vimeo.com/37873697[/media]
[media]http://youtu.be/8-1F-CokXNU[/media]

tad viss ok, bet ja samainīt secību, tad parādās tikai vimeo, bet iepriekšajais video tiek repleisots uz <br /> (masīva pēdējais elements).

Kur var būt problēma?

 

P. S. Zinu, ka regexi briesmīgi, bet nav laika tos pārtaisīt.

Link to comment
Share on other sites

japets
(labots)

"/\[media\].*?vimeo\.com\/([0-9]+)\[\/media\]/is"

un

"[media]http://yo utu.be/8-1F-CokXNU[/media]

[media]http://vi meo.com/37873697[/media]"

 

"greediness" stājas spēkā un ".*?" matcho

"http://youtu.be/8-1F-CokXNU[/media]

[media]http://"

 

1. noņem "s" no modifieriem.

2. problēma paliks, ja bb kodi būs vienā rindā, tādēļ paspēlējies ar "U" modifier http://lv.php.net/ma...n.modifiers.php neesmu pārliecināts, vai tas ir tas, kas nepieciešams. Ja nepalīdz, izmanto konkrētāku match, piemēram, "(http://)?"

 

 

edit: $it 4ak te arī bb kods un url atpazīšana enablēta...

Labots - japets
  • Patīk 1
Link to comment
Share on other sites

Леший
(labots)

izmanto konkrētāku match, piemēram, "(http://)?"

Jā, ieliku

"/\[media\]((ht|f)tp(s?):\/\/)?(www\.)?vimeo\.com\/([0-9]+)\[\/media\]/i"

un viss čotka strādā :)

Interesanti, ka problēma bija tikai ar vimeo.

Labots - Леший
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...