在PHP 中, 函數用於在多字節字符串中進行正則匹配,支持UTF- 8等多字節編碼,常用於處理中文、日文等非ASCII 字符的文本。本文將介紹一些常見的正則寫法示例及實用技巧。
語法如下:
<span><span>bool</span></span><span> </span><span><span class="function_ invoke__">mb_ereg_match</span></span> <span>(</span> <span><span>string</span></span><span> </span><span><span>$pattern</span></span> <span>,</span> <span><span>string</span></span><span> </span><span><span>$string</span></span> <span>[,</span> <span><span>string</span></span><span> </span><span><span>$option</span></span> <span>=</span> <span><span>""</span></span> <span>]) </span><p>返回<span class="fun">true</span>表示匹配成功, <span class="fun">false</span>表示匹配失敗。</p><p>示例:</p><pre> <span><span class="function_ invoke__">mb_regex_encoding</span></span> <span>(</span> <span><span>"UTF-8"</span></span> <span>);</span> <span><span>// 設置正則匹配的編碼</span></span><span> </span><span><span>if</span></span> <span>(</span> <span><span class="function_ invoke__">mb_ereg_match</span></span> <span>(</span> <span><span>"^[0-9]+$"</span></span> <span>,</span> <span><span>"12345"</span></span> <span>)) { </span><span><span>echo</span></span><span> </span><span><span>"匹配成功"</span></span> <span>; }</span> <span><span>else</span></span> <span>{ </span><span><span>echo</span></span><span> </span><span><span>"匹配失敗"</span></span> <span>; } </span><p>此示例中,正則<span class="fun">^[0-9]+$</span>表示字符串必須全部由數字組成。</p><h2> <span><span>2</span></span> <span>. 匹配中文字符</span><p>中文字符可以通過Unicode 範圍來匹配:</p><pre> <span><span class="function_ invoke__">mb_regex_encoding</span></span> <span>(</span> <span><span>"UTF-8"</span></span> <span>); </span><span><span>if</span></span> <span>(</span> <span><span class="function_ invoke__">mb_ereg_match</span></span> <span>(</span> <span><span>"^[\x{4e00}-\x{9fa5}]+$"</span></span> <span>,</span> <span><span>"測試中文"</span></span> <span>)) { </span><span><span>echo</span></span><span> </span><span><span>"全中文匹配"</span></span> <span>; }</span> <span><span>else</span></span> <span>{ </span><span><span>echo</span></span><span> </span><span><span>"匹配失敗"</span></span> <span>; } </span><p>這裡<span class="fun">[\x{4e00}-\x{9fa5}]</span>是常用的中文Unicode 範圍。</p><h2> <span><span>3</span></span> <span>. 匹配郵箱地址</span><p>郵箱匹配示例:</p><pre> <span><span class="function_ invoke__">mb_regex_encoding</span></span> <span>(</span> <span><span>"UTF-8"</span></span> <span>); </span><span><span>$pattern</span></span> <span>=</span> <span><span>"^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$"</span></span> <span>; </span><span><span>if</span></span> <span>(</span> <span><span class="function_ invoke__">mb_ereg_match</span></span> <span>(</span> <span><span>$pattern</span></span> <span>,</span> <span><span>"[email protected]"</span></span> <span>)) { </span><span><span>echo</span></span><span> </span><span><span>"郵箱合法"</span></span> <span>; }</span> <span><span>else</span></span> <span>{ </span><span><span>echo</span></span><span> </span><span><span>"郵箱不合法"</span></span> <span>; } </span><h2><span><span>4</span></span> <span>. 匹配手機號</span><p>中國大陸手機號常見寫法:</p><pre> <span><span class="function_ invoke__">mb_regex_encoding</span></span> <span>(</span> <span><span>"UTF-8"</span></span> <span>); </span><span><span>$pattern</span></span> <span>=</span> <span><span>"^1[3-9][0-9]{9}$"</span></span> <span>; </span><span><span>if</span></span> <span>(</span> <span><span class="function_ invoke__">mb_ereg_match</span></span> <span>(</span> <span><span>$pattern</span></span> <span>,</span> <span><span>"13800138000"</span></span> <span>)) { </span><span><span>echo</span></span><span> </span><span><span>"手機號合法"</span></span> <span>; }</span> <span><span>else</span></span> <span>{ </span><span><span>echo</span></span><span> </span><span><span>"手機號不合法"</span></span> <span>; } </span><h2><span><span>5</span></span> <span>. 常用技巧</span><ul><li><strong>設置編碼:</strong>在使用mb_ereg 系列函數前必須使用<span class="fun">mb_regex_encoding("UTF-8")</span>設置字符編碼,否則中文可能匹配失敗。</li><li><strong>錨點使用:</strong> <span class="fun">^</span>表示開頭, <span class="fun">$</span>表示結尾,可以保證全字符串匹配。</li><li><strong>組合匹配:</strong>可以用<span class="fun">|</span>組合多個匹配規則,例如<span class="fun">^(apple|orange|banana)$</span> 。</li><li><strong>注意轉義:</strong>正則中的特殊字符如<span class="fun">.</span> 、 <span class="fun">+</span> 、 <span class="fun">*</span>等,需要根據上下文進行轉義。</li><li><strong>性能提示:</strong> mb_ereg 系列函數相較於preg 系列稍慢,但在處理多字節字符串時更安全可靠。</li></ul><p>總結: <strong>mb_ereg_match</strong>是處理多字節字符串正則匹配的利器,通過合理設置編碼和正則規則,可以輕鬆匹配數字、中文、郵箱、手機號等常見需求。掌握這些示例和技巧,可以讓你的PHP 字符串處理更加穩健。</p> <span><span><?php</span></span><span> </span><span><span>// 這部分與文章內容無關,可以放置腳本結束處理</span></span><span> </span><span><span>echo</span></span><span> </span><span><span>"\nPHP 腳本運行結束。\n"</span></span> <span>;</span> <span><span>?></span></span><span> </span></span></div></div>