1

I have a Sting like this :

$content = "[video width="640" height="360" mp4="http://click.ir/wp-content/uploads/2017/09/Spinning_cylinder_shaped_elevator.mp4"][/video]"

I want to delete from '[video' to 'mp4="' ... is there any built-in function in PHP or solution to solve this problem.

the width and height are not static or defined in my Problem

mega6382
  • 9,211
  • 17
  • 48
  • 69

4 Answers4

3

Here is a simple 1 line solution to remove part of the string until mp4=:

$string = '[video width="640" height="360" mp4="http://click.ir/wp-content/uploads/2017/09/Spinning_cylinder_shaped_elevator.mp4"][/video]"';
$data = stristr($string, 'mp4="');
var_dump($data);
// string(96) "mp4="http://click.ir/wp-content/uploads/2017/09/Spinning_cylinder_shaped_elevator.mp4"][/video]""

But if you just want the url string:

$string = '[video width="640" height="360" mp4="http://click.ir/wp-content/uploads/2017/09/Spinning_cylinder_shaped_elevator.mp4"][/video]"';
preg_match('#"\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))"#', $string, $match);
var_dump(trim($match[0],'"'));
// string(80) "http://click.ir/wp-content/uploads/2017/09/Spinning_cylinder_shaped_elevator.mp4"
mega6382
  • 9,211
  • 17
  • 48
  • 69
1

To extract the mp4 URL part, just use preg_match:

preg_match('#mp4=\"(.*)\"#i', $content, $result);
if(!empty($result[1])){
    $url = $result[1];
}else{
   $url = "";
}
Fabian N.
  • 1,221
  • 10
  • 18
0

Use regular expressions. If I got your question right, you need to delete the url part of the string till the very end of this string. Here's the code you can use:

<?php
    $str = '[video width="640" height="360" mp4="http://click.ir/wp-content/uploads/2017/09/Spinning_cylinder_shaped_elevator.mp4"][/video]';
    $str = preg_replace_callback("/(\[video .*mp4=\")(.*)/", 'the_function', $str);
    function the_function($matches) {
        return $matches[1];
    }
    var_dump($str);
?>
Codeartist
  • 793
  • 5
  • 13
  • `preg_replace_callback`? Seriously? For returning the first element of an array? – Fabian N. Sep 24 '17 at 08:55
  • @Codeartist the input of preg_replace_callback in my problem is not static, the width and height may be get resize – Saeed Rahimimanesh Sep 24 '17 at 08:59
  • See the update, now it will take into an account that the numbers may change. – Codeartist Sep 24 '17 at 09:03
  • As for the preg_replace_callback, yes it's a bit slow, but as the author stated the content inside the string is variable and I think that this solution is more universal. Especially when things get more and more complicated. Regular expression can be easily altered to fit any needs & if suddenly the author needs to keep the URL instead of the markup before it, he would only need to change the index inside the function. – Codeartist Sep 24 '17 at 09:11
  • My comment was not about the regular expression, it was about the callback part ;) – Fabian N. Sep 24 '17 at 09:17
0

I assume you want to get the URL. I would use regex to get the url out of it. The regex would be http[\S]*.mp4.

In code this is:

$string = '[video width="640" height="360" mp4="http://click.ir/wp-content/uploads/2017/09/Spinning_cylinder_shaped_elevator.mp4"][/video]"';
// use regex to fetch the url
preg_match("/http[\S]*\.mp4/", $string,  $matches);
// get first match
$url = $matches[0];

// $url is http://click.ir/wp-content/uploads/2017/09/Spinning_cylinder_shaped_elevator.mp4

There are bether and nicer regex for URL, but in your case this would work. Depending on your Incoming data, you can adjust your regex to get what you want.

See preg_match docs: http://php.net/manual/en/function.preg-match.php

Online Regex tester: https://www.regexpal.com/

Lots of Regex infos: http://www.regular-expressions.info/

S.Gartmeier
  • 476
  • 5
  • 14
  • OK, so this code will work if the `url` always ends in `.mp4` but what if it is not the case in some instance? – mega6382 Sep 24 '17 at 09:09
  • @mega6382, I stated, that there are other ways to use regex as well. My regex just gets the job done. The regex you provided is by far more superior. This is why I added several links to informations about regex, so people can learn about it. – S.Gartmeier Sep 24 '17 at 09:15