所以我正在完成我的最后一段代码,并注意到PHP没有遵循正则表达式设置的规则。认为它在Javascript中工作得很好。我不确定我需要做什么才能使用PHP的工作如何将正则表达式从Javascript转换为使用PHP?
/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/
这是一个YouTube验证。
任何提示将非常欢迎。
编辑:
的Javascript:
var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
var ytMatch = ytVideo.value.match(regExp);
if(ytMatch && ytMatch[2].length == 11) {
PHP:
$regex = "/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/";
if(isset($ytVideo) && preg_match($regex,$ytVideo)) {
我也只注意到这个正则表达式似乎并不在意是否有 “YouTube” 的网址内。我试过其他表达式,但似乎没有工作期望这一个...有些什么......
另外一个,我发现,我认为将是一个很好的表达了这样一条:
^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$
但是,这一个似乎并不适用于Javascript/PHP。
它的工作方式与JS相同。你有什么问题?分享JS和PHP代码。 –
正如Wiktor所写,正则表达式在PHP和JS中(和我认为的大部分语言实际上都以相同的方式工作)。 – ElChupacabra