BBcode Parsing Problem

I create my own forum where you can use different types of BBcode, and one of them is [youtube] [/ youtube] for embedding youtube videos,

The idea is to make it idiotic, the user can enter a full long URL or just code for a video like this

[youtube] http://www.youtube.com/watch?v=AJ3_kndmeCg[/youtube]
[youtube] http://www.youtube.com/watch?v=AJ3_kndmeCg&feature=related[/youtube] [youtube] AJ3_kndmeCg [/ youtube]

Here is my code that outputs the code from the full long url,

<?php
$getpost=$_POST['post'];  
$getpost=preg_replace("'\[youtube\].*?=(.*?)&.*?\[/youtube\]'is",'yt link is \\1',$getpost);  
$getpost=preg_replace("'\[youtube\].*?=(.*?)\[/youtube\]'is",'yt link is \\1',$getpost);  
$getpost=preg_replace("'\[youtube\](.*?)\[/youtube\]'is",'yt link is \\1',$getpost);  
?>

Results:

Link yt - AJ3_kndmeCg
Link yt - AJ3_kndmeCg
yt - AJ3_kndmeCg

It works great if I only want to embed 3 YouTube videos,

6 youtube :

[youtube] http://www.youtube.com/watch?v=AJ3_kndmeCg[/youtube][youtube] http://www.youtube.com/watch?v=AJ3_kndmeCg&feature=related[/youtube] [youtube] AJ3_kndmeCg [/youtube]
[youtube] http://www.youtube.com/watch?v=AJ3_kndmeCg[/youtube][youtube] http://www.youtube.com/watch?v=AJ3_kndmeCg&feature=related[/youtube][YouTube] AJ3_kndmeCg [/YouTube]

:

yt - AJ3_kndmeCg
yt AJ3_kndmeCg [/youtube]
yt - AJ3_kndmeCg
yt link http://www.youtube.com/watch?v=AJ3_kndmeCg
[youtube] AJ3_kndmeCg

, ^^ , URL-,

+3
2

, .

:

$getpost=preg_replace('@\[youtube\].*?(?:v=)?([^?&[]+)(&[^[]*)?\[/youtube\]@is',
             'yt link is \\1', $getpost);

, . , , 'v =' (, http://www.youtube.com/watch?foo=bar&v=AJ3_kndmeCg ').

!

+1

Source: https://habr.com/ru/post/1760425/


All Articles