首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 過濾中英文標點符號的完整函式實作

     編輯:PHP 綜合知識

資料採集、表單驗證或文字分析時,常需移除中英文標點符號。本文提供一個健全的 filter_mark() 函式,支援全形/半形標點、特殊符號與空白字元的過濾。

完整函式程式碼

<?php
function filter_mark($text) {
    if (trim($text) === '') return '';

    // 1. 移除所有標點與空白 (POSIX [:punct:] + \s)
    $text = preg_replace("/[[:punct:]\s]/", ' ', $text);

    // 2. URL 編碼以統一處理多位元組字元
    $text = urlencode($text);

    // 3. 針對常見中英文標點的 URL 編碼進行二次過濾
    $text = preg_replace(
        "/(%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|\-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|\.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1|%E3%80%82|%EF%BC%81|%EF%BC%8C|%EF%BC%9B|%EF%BC%9F|%EF%BC%9A|%E3%80%81|%E2%80%A6%E2%80%A6|%E2%80%9D|%E2%80%9C|%E2%80%98|%E2%80%99|%EF%BD%9E|%EF%BC%8E|%EF%BC%88)+/",
        ' ',
        $text
    );

    // 4. 解碼並修剪
    $text = urldecode($text);
    return trim($text);
}
?>

使用範例

<?php
$keyword = "好‘。,好學習PHP!!!";
$keyword = urlencode($keyword);
$keyword = preg_replace(
    "/(%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|\-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|\.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1|%E3%80%82|%EF%BC%81|%EF%BC%8C|%EF%BC%9B|%EF%BC%9F|%EF%BC%9A|%E3%80%81|%E2%80%A6%E2%80%A6|%E2%80%9D|%E2%80%9C|%E2%80%98|%E2%80%99)+/",
    '',
    $keyword
);
$keyword = urldecode($keyword);
echo $keyword; // 輸出:好好學習PHP
?>

設計考量

  • 採用 urlencode 將多位元組字元轉為單位元組序列,便於正則精確比對。
  • 涵蓋 ASCII 標點、全形標點 (、。!?;:)、引號(「」『』)、省略號 (…) 等常見符號。
  • 若需保留數字、英文字母與中文字,本函式即可滿足;若需保留特定符號 (如底線),請自行調整正則。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved