我的$content
变量存储了YouTube视频链接。
$youtubeurl = "/(\[TRACK=)((http|https)(\:\/\/)(www|it|co\.uk|ie|br|pl|jp|fr|es|nl|de)(\.youtube\.)(com|it|co\.uk|ie|br|pl|jp|fr|es|nl|de)([a-zA-Z0-9\-\.\/\?_=&;]*))(\])/si";
$video = preg_match($youtubeurl, $content , $found);
print_r($video); // 1
如何将匹配字符串的值存储在变量中?现在,如果我print_r($video)
我正在打印一个1
,这意味着它已被找到。但是我需要在变量中保存找到的字符串。我怎么能这样做?
谢谢
答案 0 :(得分:4)
您应该在$found[2]
包含所有捕获的匹配,这是你在括号中得到的所有模式。
显然,您正在以相当浪费的方式使用括号,因为您正在捕获您无意使用的数据。您可以使用(?: )
作为对模式进行分组而无需捕获的方法,例如(?:http|https)
匹配http或https,但不会捕获它。
答案 1 :(得分:1)
使用preg_filter
- 如果您想将它与多个链接一起使用(只会返回正确的内容)。
或使用preg_replace
,从$content
获取所需内容。