2011-10-04 116 views
0

我想識別wordpress安裝中的哪些帖子包含空白段落,我找到一個手動並單擊「編輯」,這是我看到的:SQL「LIKE」查詢沒有找到我知道它在那裏

img

於是我試着像一個查詢:

SELECT * 
FROM `wp_posts` 
WHERE `post_content` LIKE '%<p> </p>%' 

沒有返回結果,並"<p> </p>"被複制從該行我發現手工粘貼。我也嘗試過這樣的模式REGEXP:

#<p[^>]*>(\s|&nbsp;?)*</p># 

但仍然沒有結果回來,我能做些什麼來找到那些空的段落?

+0

你確定標籤數據沒有在實際上表編碼? –

+0

不要假設標籤沒有內容,因爲它只包含空格。 '

'沒有內容,但實際上,是一個空的段落。 – mikerobi

+1

如果您的目標是刪除空的「p」標籤,最好的解決方案是使用基於樹的HTML解析器解析每一行。從文檔樹中刪除空節點並將其放回數據庫中。 – mikerobi

回答

1

爲什麼在post_title而不是post_content上搜索?

SELECT ID 
    FROM `wp_posts` 
WHERE `post_content` LIKE '%<p> </p>%' 

應該工作。如果你想使用REGEXP,並允許在他們&nbsp;段落:

SELECT ID 
    FROM `wp_posts` 
WHERE `post_content` REGEXP '<p>[[:blank:]]*(&nbps;)?[[:blank:]]*</p>' 
+0

對不起,我修正了我發佈的查詢中的錯誤,我在搜索post_content,但發佈問題時發生了錯誤。 – user979390

+0

@ user979390你是否嘗試過我的第二個查詢? – NullUserException

+0

是的,但我得到了「#1139 - 從正則表達式得到錯誤'無效的字符類',仍然試圖找出原因。 – user979390

0

更改此:

WHERE `post_title` LIKE '%<p> </p>%' 

要這樣:

WHERE `post_content` LIKE '%<p> </p>%' 

,然後再試一次。

+0

對不起,我修正了我發佈的查詢中的錯誤,我在搜索post_content,但發佈問題時發生了錯誤。即使使用post_content,我也沒有查詢結果返回 – user979390

0

以及..等應工作..

,還有一個備用可能是使用INSTR

WHERE instr(post_content, '<p> </p>') > 0

+0

仍然有0個結果返回。 – user979390

+0

它必須是一些隱藏的字符.. – Randy

相關問題