要做到對搜索引擎友好,一般都應該在頁面中設置Keywords, Description這樣的Meta數據,我們的Drupal網站中很多都是用PHP來實現的,代碼如下:
$meta=" <meta name='keywords' content='$keywords' /> <meta name='description' content='$description' /> "; $element = array( '#type' => 'markup', '#markup' => $meta, ); drupal_add_html_head($element, 'meta');
但是發現在keywords, description裡面包含有單引号時候會讓html錯誤,特别是近期添加amp版本的時候,google webmaster tools或者amp validator會報錯。
這時候可以這樣修改:
$meta=" <meta name=\"keywords\" content=\"$keywords\" /> <meta name=\"description\" content=\"$description\" /> "; $element = array( '#type' => 'markup', '#markup' => $meta, ); drupal_add_html_head($element, 'meta');
但keywords、description還有時會遇到來源數據中包含雙引号的問題,我們隻好在此前進行替換,把雙引号替換成單引号,代碼如下:
$keywords_meta = str_replace('"',"'",$meta_keyword); $description_meta = str_replace('"',"'",$description); $meta=" <meta name=\"keywords\" content=\"$keywords_meta\" /> <meta name=\"description\" content=\"$description_meta\" /> "; $element = array( '#type' => 'markup', '#markup' => $meta, ); drupal_add_html_head($element, 'meta');
這樣才算是能徹底解決這種因為引号報錯的問題。在Drupal網站中,這種修改可能涉及到模闆、模塊、頁面、Views、Block等各種使用到PHP代碼來設置meta數據的地方,檢查起來好麻煩。
2022-7-4補充:更标準的做法是使用PHP函數htmlentities() 把單雙引号等字符轉換為 HTML 實體。
评论