TOC filter 支援字串(two-byte characters)



使用 https://www.drupal.org/project/toc_filter
導覽選單原本程式的寫法並沒有支援中文字串(two-byte characters)
程式麻瓜的我其實一直無法處理,只能放著
其實也有人提出 https://www.drupal.org/project/toc_filter/issues/3003326

耐心的問 ChatGPT 居然就順利解決了
$header_id = mb_ereg_replace('[^[:alnum:]]+', '-', mb_strtolower(trim($header_title)), 'u');

不過蠻關鍵的就是提問的方式,我先給ChatGPT全部的程式碼,他會回答你是Drupal的模組
接著就開始朝著如何去修改 $header_id
我原本問
$header_id = preg_replace('/[^-a-z0-9]+/', '-', drupal_strtolower(trim($header_title)));
support two-byte characters
回覆
$header_id = preg_replace('/[^-a-z0-9]+/u', '-', mb_strtolower(trim($header_title)));
但修改後仍無法作用
最後問了
$header_id
support two-byte characters

居然解答了我這個程式麻瓜的問題,有夠神奇,呵呵

由於使用mb_ereg_replace日誌會報錯
Warning:preg_replace() expects at least 3 parameters, 1 given 於 _toc_filter_process_callback() 

於是我又重問了一次,改問 $header_id  support Unicode 字符集
$header_id = preg_replace('/[^-\p{L}\p{N}]+/u', '-', mb_strtolower(trim($header_title)));

日誌沒再報錯,打完收工!

留言

熱門文章