所以我正在完成我的最後一段代碼,並注意到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