Saeed Rahimimanesh
Saeed Rahimimanesh

Reputation: 43

delete specific characters from start to end of string PHP

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

Answers (4)

mega6382
mega6382

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

S.Gartmeier
S.Gartmeier

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

Codeartist
Codeartist

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

Fabian N.
Fabian N.

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

Related Questions