Reputation: 43
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
Upvotes: 1
Views: 252
Reputation: 9396
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"
Upvotes: 3
Reputation: 491
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/
Upvotes: 0
Reputation: 793
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);
?>
Upvotes: 0
Reputation: 1240
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 = "";
}
Upvotes: 1