2017-05-29 73 views
1

我想替換內容的圖像alt標籤。所以我用preg_replace如何替換圖像'alt'屬性,如果它的空白?

add_filter('the_content', 'click_to_expand_gallery'); 
function click_to_expand_gallery($content) { 
     $pattern ='~<a(.*?)href=(.*?)><img(.*?)alt="(.*?)"></a>~i'; 
     $replacement = '<a$1href=$2><img$3alt="Game"></a>'; 
     $content = preg_replace($pattern, $replacement, $content); 
    } 

它的工作很好,但問題是,這種代碼替換alt標籤,如果它已經有數據。

任何人都可以請指導我如何檢查ALT標記是否爲空,然後根據它替換它的數據。

回答

1

只有當alt具有空值時才匹配fullstring。奪兩個部分保持不變,並把它們放在你的默認值 「遊戲」 的任一側$replacement

方法(Demo):

$pattern ='~(<a.*? href=[^>]*><img.*? alt=")("[^>]*></a>)~i'; 
$replacement = '$1Game$2'; 
$content = preg_replace($pattern, $replacement, $content); 
echo $content; 

輸入/輸出:

$content='<a href="something.com"><img src="blah.jpg" alt=""></a>'; 
// output: <a href="something.com"><img src="blah.jpg" alt="Game"></a> 

$content='<a href="something.com"><img src="blah.jpg" alt="Not Empty"></a>'; 
// output: <a href="something.com"><img src="blah.jpg" alt="Not Empty"></a> 

Pattern Demo

現在,這個字面上匹配一個帶有href屬性的<a>標籤, o具有零個或多個其他屬性,其中包含<img>標記,該標記必須具有空的alt屬性,並且可能具有零個或多個其他屬性。

如果您不在意檢查<img>標記是否嵌套在錨標記中,那麼可以將正則表達式模式減少爲僅匹配<img>部分。

+0

你能否請我解釋一下''〜(] *>)〜';'這段代碼或任何引用的內容。 –

+0

@RockySena我需要更好地完善這種模式。它有效,但我沒有時間進行優化。我現在和我的家人在一起。我會盡快回來。我會包括解釋。 – mickmackusa

+0

謝謝...... mickmackusa –