我很難嘗試突出顯示格式化電話號碼的搜索結果。php - preg_replace突出顯示格式化的電話號碼
$search_txt='5678'; // user generated (can be anything)
$phone_number='(123) 456-7890'; // always in this format
我想這得到突出顯示的字符串:
$highlighted = preg_replace('#'. preg_quote($search_txt) .'#i', '<span style="background-color:#ff0;">\\0</span>', $phone_number);
的$search_txt
可以是任何東西。 「7890」作品,「456-7890」作品,但由於$phone_number
中的「 - 」,「5678」不起作用。
我也嘗試過去除$phone_number
(即「1234567890」)的格式,但是如果他們輸入字母「56-78」,我有同樣的問題。
如果我剝既$phone_number
(「1234567890」)和$search_txt
(「5678」),該突出的作品,並返回1234<span style="background-color:#ff0;">5678</span>90
,但我不知道如何與字符串中的高亮度代碼重新引入的格式。
最後一個字符串需要是電話號碼格式「(123)456-7890」,並突出顯示包含的HTML。
選項1:我可以格式化電話號碼而忽略號碼內的HTML標籤嗎?
即1234<span style="background-color:#ff0;">5678</span>90
變得(123) 4<span style="background-color:#ff0;">56-78</span>90
選項#2:我可以忽略在字母字符中$phone_number
匹配時,而是包括它們的取代字符串中?
即 「5678」 將匹配 「(123)456-7890」
並返回(123) 4<span style="background-color:#ff0;">56-78</span>90
。
保存在一個變量的原始格式號碼,然後剝離破折號另一個變量。進行比較並將原件作爲突出顯示的數字返回。 –
我也試圖突出顯示格式化數字中的搜索項(「56-78」)(當他們搜索「5678」時)。原文需要部分突出顯示(不是整個字符串)。 – REV