Предполагая, что у вас есть URL, изолированных в переменной, просто сделать это:
$taggedUrl = sprintf("[video]%s[/video]", $url);
Или:
$taggedUrl = "[video]" . $url . "[/video]";
Или:
$taggedUrl = "[video]{$url}[/video]";
Но, если вам нужно найти URL в другом тексте, preg_replace()
будет уместным:
preg_replace('/((?:https?:\/\/)?www\.youtube\.com\/watch\?v=\w+)/', '[video]\1[/video]', $inputString);
Например:
php > $inputString = "osme regewgqg affbefqeif rgqbig www.youtube.com/watch?v=6Zgp_G5o6Oc sgwe\nhttps://www.youtube.com/watch?v=6ZrRpG_o6Oc wbqergq http://www.youtube.com/watch?v=6Zgp_G5o6Oc gegrqe";
php > var_dump($inputString);
string(176) "osme regewgqg affbefqeif rgqbig www.youtube.com/watch?v=6Zgp_G5o6Oc sgwe
https://www.youtube.com/watch?v=6ZrRpG_o6Oc wbqergq http://www.youtube.com/watch?v=6Zgp_G5o6Oc gegrqe"
php > var_dump(preg_replace('/((?:https?:\/\/)?www\.youtube\.com\/watch\?v=\w+)/', '[video]\1[/video]', $inputString));
string(221) "osme regewgqg affbefqeif rgqbig [video]www.youtube.com/watch?v=6Zgp_G5o6Oc[/video] sgwe
[video]https://www.youtube.com/watch?v=6ZrRpG_o6Oc[/video] wbqergq [video]http://www.youtube.com/watch?v=6Zgp_G5o6Oc[/video] gegrqe"
php >
Чтобы объяснить регулярное выражение используется:
/.../ # Marks the start and end of the expression.
(...) # Captures the entire match as \1
(?:...)? # ?: Makes a non-capturing group.
# We put it in parenthesis to group this part of the expression.
# The ? at the end makes the whole group optional
# (so that http:// or https:// is not required at all, but matched if present)
https? # Match either 'http' or 'https'.
\w+ # Matches one or more 'word characters' (0-9, a-z, A-Z, _)
вы можете, но почему бы не использовать parse_url/parse_str, чтобы сделать это для вас? –
if '$ sptr =" www.youtube.com/watch?v=6Zgp_G5o6Oc ";' then only '$ str = '[video]'. $ Ул '[видео]';. ' – splash58