如何在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;。