如何在PHP中删除字符串中的额外文本?

如何在PHP中删除字符串中的额外文本?,php,regex,string,Php,Regex,String,我有一根绳子 string(47) "src="https://www.youtube.com/embed/marR48481a"" 我只想从上面的字符串获取youtube URL,即https://www.youtube.com/embed/marR48481a 只是 我试过下面的方法,但不起作用 $string = preg_replace('/\s+/', '', $yturl); $string = str_replace("",'src="', $string); var_dum

我有一根绳子

string(47) "src="https://www.youtube.com/embed/marR48481a""
我只想从上面的字符串获取youtube URL,即https://www.youtube.com/embed/marR48481a 只是

我试过下面的方法,但不起作用

$string = preg_replace('/\s+/', '', $yturl);
$string = str_replace("",'src="', $string);


var_dump($string);
但这仍然打印下面的字符串

string47 src=https://www.youtube.com/embed/mBqpaAKtnXE


你把针和干草堆倒过来了。试试这个:

$string = str_replace('src="', '', $string);

如果初始字符串是iframe,最好使用适当的工具提取HTML中的信息,而不是使用一堆正则表达式:

$html = '<iframe id="ytplayer" type="text/html" width="640" height="360" src="http://www.youtube.com/embed/M7lc1UVf-VE?autoplay=1&origin=http://example.com" frameborder="0"/>' ;

$doc = new DOMDocument('1.0', 'UTF-8');
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$url = $xpath->query('//iframe/@src')->item(0)->textContent;

echo $url ; // http://www.youtube.com/embed/M7lc1UVf-VE?autoplay=1&origin=http://example.com 

绳子是从哪里来的?可能有更好的方法可以做到这一点。@DB中的ChrisWhite整个字符串是一个iframe。但是我在这个变量$YTURL中只有上面提到的字符串如果它总是这个精确的字符串,为什么不简单地使用它呢?您可以使用这个regex.*http[^]+.*在group1中捕获url,并用$1替换整个字符串以获得url。仅使用$string=str_replace['src=','',$string;。