2017-09-24 127 views
0

我有这样的刺:删除特定字符的字符串PHP的结束

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

我想从'[video' to 'mp4="'删除... 是在有任何PHPbuilt-infunction或解决方案来解决这个问题。

宽度和高度不是静态的或在我的问题中定义

+3

[str_replace函数(http://php.net/manual/bg/function.str-replace.php)? [的preg_match](http://php.net/manual/bg/function.preg-match.php)? –

+1

可能重复[如何删除部分字符串?](https://stackoverflow.com/questions/2192170/how-to-remove-part-of-a-string) – mega6382

+0

@ mega6382宽度和高度并不总是静态或在我的问题中定义 –

回答

0

我假设你想获得URL。我会使用正则表达式来获取网址。正则表达式应该是http [\ S] *。mp4。

在这段代码是:

$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 

有bether和URL更好的正则表达式,但在你的情况下,这会工作。根据你的传入数据,你可以调整你的正则表达式来获得你想要的。

见的preg_match文档:http://php.net/manual/en/function.preg-match.php

在线正则表达式测试仪:https://www.regexpal.com/

大量的正则表达式的相关信息:http://www.regular-expressions.info/

+0

非常感谢你......问题已经解决 –

+0

好的,所以如果'url'总是以'.mp4'结尾,但如果在某些情况下不是这样的话呢? – mega6382

+0

@ mega6382,我表示,还有其他方法可以使用正则表达式。我的正则表达式只是完成了这项工作。你提供的正则表达式要优越得多。这就是为什么我添加了几个关于正则表达式的信息的链接,所以人们可以了解它。 – natheriel

0

使用正则表达式。如果我的问题得到了解决,则需要删除字符串的url部分直到字符串的末尾。这里是你可以使用的代码:

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

'preg_replace_callback'?真的吗?为了返回数组的第一个元素? –

+0

@Codeartist在我的问题preg_replace_callback的输入不是静态的,宽度和高度可能会得到调整 –

+0

看到更新,现在它会考虑到数字可能会改变的帐户。 – Codeartist

1

要提取MP4 URL部分,只需使用preg_match

preg_match('#mp4=\"(.*)\"#i', $content, $result); 
if(!empty($result[1])){ 
    $url = $result[1]; 
}else{ 
    $url = ""; 
} 
3

这是一个简单的1行解决方案,用于删除部分字符串,直到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]"" 

但如果你只是想在URL字符串:

$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" 
相关问题