我使用正則表達式來捕獲wordpress中[video]
短代碼內的變量。正則表達式來捕捉視頻wordpress短代碼中的變量
想象一下不同的簡碼。一個看起來是這樣的:
[video width="1080" height="1920" mp4="http://path-to-video/20160119_144218.mp4" autoplay="true" webm="http://path-to-video/20160119_144218_1.webm"][/video]
另外一個,像這樣:
[video width="720" height="1280" mp4="http://path-to-video/VID_20160118_134920.mp4" autoplay="true" poster="http://path-to-image/2016-01-23-16_23_45-Export-Settings-1.jpg"][/video]
我正則表達式的目的是爲了獲取mp4
和webm
變量。
CATCH是有時只有mp4
來源;有時兩者都存在。 其他信息,如autoplay
或poster
可能會或可能不會在那裏,按照wordpress喜歡的順序。
所以我需要一個條件正則表達式考慮到這一點,並沒有失敗,如果沒有webm存在。
本來我這有一個:
\[video .* mp4="(.*?)".*webm="(.*?)"\]\[/video\]
與一個簡碼既mp4
和webm
(信任的WordPress完美工作會,因爲它似乎是在做某種原因,始終把WEBM末),但當webm
不存在時會失敗。
現在我正在嘗試使用條件正則表達式,但沒有取得很大的成功。
這是我有:
\[video .* mp4="(.*?)".*(?(?=.*webm=)webm="(.*?)"\]\[/video\]|.*\]\[/video\])
以上惹人mp4
值只是在兩個以上的例子罰款:但如WEBM存在,它會忽略它。
我很擔心,即使我設法檢索這兩個變量,短代碼中信息的其他變體可能會拋出我的正則表達式。
你能幫我創建一個更好的,防呆的正則表達式嗎?
嘗試['\ [視頻\ B [^]] * \ SMP4 = 「([^」] *)「(?: (?!\ swebm =)[^]])*(?:\ swebm = 「([^」] *)「)[^]] *] \ [\ /視頻]'](HTTPS:// regex101的.com/R/pG8aR8/1)。 –
當WP已經爲你做了這件事時,你爲什麼會嘗試自己解析一個簡碼? https://codex.wordpress.org/Shortcode_API#Handling_Attributes – CBroe
@Wiktor:哇...我有這麼多的問題...這似乎工作,謝謝:))) – nico