简体   繁体   中英

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

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"

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 = "";
}

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);
?>

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/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM