2011-06-09 38 views
0

如何爲搜索結果頁面提供乾淨的html輸出?每次嘗試在搜索字詞中加入「&」等特殊字符時,我通常都會顯示帶有「&」的結果,但其中包含HTML實體。因此,結果有&「等...以下是截圖樣品 - http://min.us/mt3rOV5zVtOh6Drupal中的搜索結果包含HTML實體。我怎樣纔能有一個乾淨的輸出?

同時,當我做我的搜索與」 &「列入搜索詞,結果收益率具有淨輸出

在搜索result.tpl.php

http://pastebin.com/zCmMJLNh

我已經嘗試了幾種解碼功能,但沒有成功的一段代碼。一直在努力解決這個問題好幾天了。該網站使用Drupal的6並且搜索模塊已被覆蓋。

回答

0

那麼,你可以嘗試drupal_html_to_text將片段轉換爲純文本。

正確的方法可能是找出爲什麼這些結果沒有得到轉換。根據您的意見,僅當您專門搜索「&」時,纔會顯示問題。更具體地講,它是在search.module正則表達式(/modules/search/search.module - 6行1188):

preg_match_all('/ ("([^"]+)"|(?!OR)([^" ]+))/', ' '. $keys, $matches); 

它只關鍵字(不是之後)匹配的空間。你可以在這裏修改$ keys,如:

if ($keys == '&') $keys = '&' 

或類似的東西(當然這意味着黑客攻擊核心 - meh)。

您也可以通過模塊添加form_alter並修改搜索表單(請參閱此鏈接how to add the form_alter)。那麼你可以add a custom submit handler這會改變表單中的搜索詞在提交之前。

+0

嗨!我試過drupal_html_to_text,但這裏是我得到的--http://min.us/mZsHkh9zx101c。用*附加的詞語是搜索詞中包含的粗體詞。片段僅來自節點。我沒有使用Solr。 有沒有辦法在用戶點擊搜索按鈕之前修復它?比如說,「&」會被替換爲「&_a_m_p;」?謝謝! – liza 2011-06-10 14:09:41

+0

我更新了我的評論以包含一些基於您的屏幕截圖的建議。我認爲這是可以解決的(但令人討厭)。 – hross 2011-06-10 16:38:20

+0

嘿hross。對不起,這很晚的迴應,但我一直在做別的。我從來沒有解決過這個問題,因爲我不擅長PHP。但現在我正在這樣做,我現在已經聽取了你的建議和學習。我現在在考慮忽略搜索條件中的&。但仍然在尋找一些教程。如果你仍然可以提供幫助或任何想要的人,請給我提供一個簡單的代碼,我可以在我的Drupal中跟蹤和鉤住。萬分感謝! – liza 2013-07-03 08:54:31

1

你說「...的搜索模塊已被重寫」這可能是爲什麼搜索代碼段保持輸出htmlentityencoded的原因(例如check_plain'd轉義HTML)

一個更好的解決將是找到原因在修改,如修改該搜索片段(如果有的話)

或者,你很可能運行$片斷通過decode_entities預處理功能

print decode_entities($snippet)

假設,html已經被轉義,就好像沒有,可能是安全風險。

參見:http://php.net/manual/en/function.html-entity-decode.php 和:http://www.php.net/manual/en/function.htmlspecialchars-decode.php

+0

嗨!大衛。感謝您的答覆。不幸的是,我找不到$ snippet的預處理函數。然而,添加decode_entities並不能解決問題。我也用過html_entity_decode,check_plain,htmlentities,htmlspecialchars_decode。我試圖在Drupal.org中搜索,也看到了同樣的問題。請參閱http://min.us/mrBM2fPqRRk96 – liza 2011-06-11 04:38:45

+0

默認搜索沒有上面提到的問題,所以我認爲解決方案必須研究您必須從那裏進行搜索和工作的任何修改。 – 2011-06-11 07:12:19

相關問題