2017-05-30 42 views
0

在我的網站中,我使用get_the_content()來顯示我的帖子的內容。但是,我的發佈視頻網址(這裏是youtube)也會與我的內容一起顯示。在使用get_the_content()時隱藏WordPress上發佈內容的YouTube網址

我試過使用preg_replace()來避免包含youtube URL的字符串。但我想通過使用字符串 'https://www.youtube.com/watch?v'的開頭動態地將其替換爲空字符串。

我正在尋找這樣的東西。 $description = preg_replace('https://www.youtube.com/watch?v=f0cReHKUiJM', '', get_the_content());

請分享你的想法,我該如何做到這一點。

在此先感謝。

+0

檢查[這個答案](https://stackoverflow.com/questions/19377262/regex-for-youtube-url)。 –

+0

我發現實現此目的的一種方法是將字符硬編碼爲11並將其從字符串中刪除。任何建議表示讚賞。 –

回答

0

如果你從字面上想從你的get_the_content()字符串中刪除所有YouTube網址,(假設href值是雙引號),你可以使用這個:

~https?:/{2}(?:w{3}\.)?youtube\.com[^"]+~ 

Pattern Demo

這可以被實現爲:

$description=preg_replace('~https?:/{2}(?:w{3}\.)?youtube\.com[^"]+~','',get_the_content()); 

PHP Demo

但是這會留下鏈接的「殼」(<a href="">...</a>)。


你可以走得更遠一步,刪除標籤並在保留文本:

~<a.*?href="https?://(?:www\.)?youtube\.com[^>]*>(.*?)</a>~ 

Pattern Demo

實現:

$description=preg_replace('~<a.*?https?://(?:www\.)?youtube\.com[^>]*>(.*?)</a>~','\1',get_the_content()); 

PHP Demo

事實是,您尚未提供任何來自get_the_content()的完整字符串樣本,或者說明url或a標記結構(引用的額外屬性或方式)是否有變化。這些因素可能會影響模式設計。我的答案主要基於假設。也許它會幫助你。如果沒有,最好是如果你更新你的問題。

+0

此字符串不會有youtube.com有時它是嵌入式URL。 –

+0

我瞭解您正在嘗試匹配的「針」。你能爲我提供一個現實的「乾草堆」嗎? (或者其中兩個)如果我理解了全部內容,我將能夠幫助你。請告訴我乾草堆可能會有多少變化,以及我的答案如何預計不能發揮作用。 – mickmackusa

+0

請提供我所需的信息,以便我可以解決此頁面。 – mickmackusa