user5890114
user5890114

Reputation: 11

PHP exploding url from text, possible?

i need to explode youtube url from this line:

[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]

It is possible? I need to delete [embed] & [/embed].

Upvotes: 0

Views: 88

Answers (4)

Jay Blanchard
Jay Blanchard

Reputation: 34426

Just for good measure, you can also use positive lookbehind's and lookahead's in your regular expressions:

(?<=\[embed\])(.*)(?=\[\/embed\])

You'd use it like this:

$string = "[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]";
$pattern = '/(?<=\[embed\])(.*)(?=\[\/embed\])/';
preg_match($pattern, $string, $matches);
echo $match[1];

Here is an explanation of the regex:

(?<=\[embed\]) is a Positive Lookbehind - matches something that follows something else.

(.*) is a Capturing Group - . matches any character (except a newline) with the Quantifier: * which provides matches between zero and unlimited times, as many times as possible. This is what is matched between the groups prior to and after. This are the droids you're looking for.

(?=\[\/embed\]) is a Positive Lookahead - matches things that come before it.

Upvotes: 0

chalasr
chalasr

Reputation: 13167

$string = '[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]';
$string = str_replace(['[embed]', '[/embed]'], '', $string);

See str_replace

Upvotes: 2

OmegaTCU
OmegaTCU

Reputation: 108

why not use str_replace? :) Quick & Easy http://php.net/manual/de/function.str-replace.php

Upvotes: 0

Gwendal
Gwendal

Reputation: 1273

preg_match is what you need.

<?php

$str = "[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]";
preg_match("/\[embed\](.*)\[\/embed\]/", $str, $matches);
echo $matches[1]; //https://www.youtube.com/watch?v=L3HQMbQAWRc

Upvotes: 2

Related Questions