Current Location: Home> Latest Articles> How to Properly Use the mb_ereg_search_regs Function for Multibyte Character Regex Matching

How to Properly Use the mb_ereg_search_regs Function for Multibyte Character Regex Matching

gitbox 2025-08-26
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Example PHP code unrelated to the main article</span></span><span>
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Current timestamp: "</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<br>------------------------<br>"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<p><hr></p>
<p><h2>How to Properly Use <code>mb_ereg_search_regs

The return value is an array containing all the subpatterns of the current match. If no match is found, it returns FALSE.

2. Steps for Use

  1. Set the regex encoding mode: mb_regex_encoding('UTF-8');
  2. Initialize the search: mb_ereg_search_init($string, $pattern);
  3. Retrieve match results: $matches = mb_ereg_search_regs();
  4. You can continue searching for the next match using a loop or mb_ereg_search().

3. Example Code

</span><span><span class="function_ invoke__">mb_regex_encoding</span></span><span>(</span><span><span>'UTF-8'</span></span><span>);
<p></span><span><span>$text</span></span><span> = </span><span><span>"PHP regex handling multibyte characters example"</span></span><span>;<br>
</span><span><span>$pattern</span></span><span> = </span><span><span>"multibyte( characters)"</span></span><span>;</span></p>
<p></span><span><span class="function_ invoke__">mb_ereg_search_init</span></span><span>(</span><span><span>$text</span></span><span>, </span><span><span>$pattern</span></span><span>);</p>
<p></span><span><span>// Get the first match result</span></span><span><br>
</span><span><span>if</span></span><span> (</span><span><span>$match</span></span><span> = </span><span><span class="function_ invoke__">mb_ereg_search_regs</span></span><span>()) {<br>
</span><span><span>echo</span></span><span> </span><span><span>"Match found:<br>"</span></span><span>;<br>
</span><span><span class="function_ invoke__">print_r</span></span><span>(</span><span><span>$match</span></span><span>);<br>
} </span><span><span>else</span></span><span> {<br>
</span><span><span>echo</span></span><span> </span><span><span>"No match found."</span></span><span>;<br>
}<br>

Sample output:

Match found:
</span><span><span class="function_ invoke__">Array</span></span><span>
(
    [</span><span><span>0</span></span><span>] => multibyte characters
    [</span><span><span>1</span></span><span>] => characters
)

4. Notes

  • Ensure the string and regex pattern have the same encoding, or the match may fail.
  • The mb_ereg series functions are slightly less efficient than the preg_* series but are safer and more reliable in multibyte environments.
  • For global matches, use mb_ereg_search_getregs() or loop with mb_ereg_search().

5. Summary

Using mb_ereg_search_regs allows you to easily retrieve subpatterns in multibyte strings, making it suitable for handling Chinese, Japanese, and other multibyte texts. Pay attention to encoding settings and search initialization order to perform matches safely and efficiently.