這是一個雙摺疊問題。我有一個ajax請求輪詢重複的帖子標題,但它被不同的引用/撇號和它們的變體拋出,當我知道有重複時返回負數。wordpress query with quote /撇號varrients
我有一個帖子標題是:「奔的大魚」,即用撇號(’)
但這樣做的永遠是下一個查詢回來負:
Ben's Big Fish (')
Ben’s Big Fish (’)
Bens Big Fish (no apos)
然而,對於Big Fish
返回查詢所有該變體將標題中包含這些詞語,其中包括帶有引號和撇號的帖子標題。
下面是也導致問題的主要特點:
Apostrophe ' '
Open single quote ‘ ‘
Close single quote ’ ’
---
Quotation mark " "
Open double quotes 「 “
Close double quotes 」 ”
由於用戶往往從MS Word文檔等等,這些人物都上來了很多拉文本。
在JS最後我通過JSON發送到我的AJAX的處理程序之前,將其通過該功能進行編碼文章標題:
function htmlEntities(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/‘/g, '‘').replace(/’/g, '’').replace(/「/g, '“').replace(/」/g, '”');
}
在我的PHP AJAX鉤我處理傳入的POST查詢作爲如下:
global $wpdb;
// Grab details from inbound POST array & prepare for sql
$title = html_entity_decode($_POST['post_title']); //first un-encode
$post_id = $_POST['post_id'];
$sim_query = "SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' AND post_title LIKE '%%%s%%' AND ID != '%d'";
$sim_results = $wpdb->get_results($wpdb->prepare($sim_query, $wpdb->esc_like($title), $post_id));
if ($sim_results)
{ // Send the results back as json }
所以我的問題是 一)如何獲得查詢返回的明顯重複的預期 b)和可能相關的,有沒有辦法,我們可以通過字符串,查找所有有效地搜索變的美聯社撇號和引號字符沒有多個查詢?
我不是任何正則表達式專家,但是不應該在搜索特殊字符時加上\。例如:'.replace(/&/ g,'&')' - >'.replace(/ \&/ g,'&')'etc? –
@dingo_d謝謝你指出,雖然我不認爲在這種情況下轉義是必要的。至少Webkit似乎能夠很好地處理這個問題,雖然較老的js引擎可能會有所例外。此示例源自https://css-tricks.com/snippets/javascript/htmlentities-for-javascript/。無論如何,它不會以任何方式影響sql查詢的結果。 – orionrush