Suggest mb_* functions with explicit encoding

Is there a way (a setting or a plugin) to make PHPStorm suggest use of multibyte string functions instead of regular ones and suggest explicit encoding in those? Like a style recommendation kind of thing? Ideally with automatic suppression if potential binary data is detected in the flow.

1
3 comments

i've worked-around:

go to settings/editor/inspections 
on profile - export it

in the resulting xml-file search for <inspection_tool class="SSBasedInspection" (dont know if it's always there, i already had some custom entries here) and change or append the lines below. It's a search/replace from this list https://www.php.net/manual/en/ref.mbstring.php
then import the modified file back.
afterwards you can easyly change the severity/highlighting config within the settings dialog.

the code:

<inspection_tool class="SSBasedInspection" enabled="true" level="WARNING" enabled_by_default="true">
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="check_encoding(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="chr(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="convert_case(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="convert_encoding(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="convert_kana(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="convert_variables(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="decode_mimeheader(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="decode_numericentity(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="detect_encoding(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="detect_order(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="encode_mimeheader(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="encode_numericentity(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="encoding_aliases(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_match(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_replace_callback(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_replace(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_search_getpos(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_search_getregs(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_search_init(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_search_pos(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_search_regs(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_search_setpos(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg_search(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ereg(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="eregi_replace(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="eregi(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="get_info(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="http_input(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="http_output(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="internal_encoding(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="language(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="list_encodings(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="ord(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="output_handler(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="parse_str(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="preferred_mime_name(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="regex_encoding(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="regex_set_options(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="scrub(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="send_mail(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="split(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="str_pad(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="str_split(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strcut(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strimwidth(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="stripos(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="stristr(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strlen(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strpos(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strrchr(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strrichr(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strripos(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strrpos(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strstr(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strtolower(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strtoupper(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="strwidth(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="substitute_character(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="substr_count(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
   <searchConfiguration name="use mb_* function??" uuid="0650c09d-2ec9-3959-93a2-7bcebe01be31" text="substr(" recursive="true" caseInsensitive="true" type="PHP">
     <constraint name="__context__" within="" contains="" />
   </searchConfiguration>
 </inspection_tool>
 

1

I am not sure using same uuid for all items is a good idea, and changing them manually may also be a bad one. I also expect that this will highlight functions even when working with binary data, and would not allow to update function from context menu (which is a minor thing, of course). I would prefer something like this in a plugin format, or maybe even native. Perhaps JetBrains people can turn this into feature request? Or is this too niche?

0

Apparently, identical UUIDs is expected (unless this is a bug), at least when adding custom inspections through UI, they do get same UUIDs. Here's what I did for my needs. It does not handle named references, though. Does anyone have any ideas it can be modified? And how can I turn this into a plugin?

    <inspection_tool class="SSBasedInspection" enabled="true" level="WARNING" enabled_by_default="true">
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" description="Recommend explicit encoding in multibyte functions" suppressId="NoMBExplicitEncoding" problemDescriptor="Multibyte function is used without explicit encoding and may lead to unexpected results" text="mb_check_encoding($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_check_encoding($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_chr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_chr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_convert_case($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_convert_case($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_convert_encoding($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_convert_encoding($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_convert_kana($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_convert_kana($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_convert_kana($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_convert_kana($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_decode_numericentity($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_decode_numericentity($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_encode_numericentity($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_decode_numericentity($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_http_output()" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_http_output('UTF-8')">
        <constraint name="__context__" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_ord($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_ord($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_scrub($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_scrub($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_str_pad($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_pad($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_str_pad($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_pad($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_str_pad($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_pad($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="4" maxCount="4" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_str_split($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_split($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_str_split($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_split($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strcut($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strcut($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strcut($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strcut($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strimwidth($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strimwidth($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strimwidth($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strimwidth($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="4" maxCount="4" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_stripos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stripos($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_stripos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stripos($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_stristr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stristr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_stristr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stristr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strlen($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stristr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strpos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strpos($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strpos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strpos($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strrchr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrchr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strrchr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrchr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strrichr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrichr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strrichr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrichr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strripos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strripos($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strripos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strripos($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strrpos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrpos($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strrpos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrpos($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strstr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strstr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strstr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strstr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strtolower($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strtolower($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strtoupper($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strtoupper($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_strwidth($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strwidth($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_substr_count($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_substr_count($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_substr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_substr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Implicit encoding" uuid="7387f796-c82a-3028-87f9-07527621e7c8" text="mb_substr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_substr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" description="Suggest replacing certain string functions with multibyte alterantive" suppressId="NoMBMultibyteAlternative" problemDescriptor="When working with strings in modern world it is better to expect multibyte characters be present, so using multibyte function is recommend, when not dealing with binary data." text="chr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_chr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="ord($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_ord($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="str_pad($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_pad($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="str_pad($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_pad($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="str_pad($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_pad($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="str_split($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_split($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="str_split($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_str_split($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="stripos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stripos($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="stripos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stripos($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="stristr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stristr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="stristr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_stristr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strlen($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strlen($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strpos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strpos($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strpos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strpos($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strrchr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrchr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strrchr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrchr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strripos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strripos($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strripos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strripos($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strrpos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrpos($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strrpos($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strrpos($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strstr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strstr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strstr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strstr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strtolower($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strtolower($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="strtoupper($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_strtoupper($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="substr_count($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_substr_count($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="substr_count($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_substr_count($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="substr_count($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_substr_count($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="4" maxCount="4" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="substr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_substr($p$, encoding: 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="2" maxCount="2" negateName="true" within="" contains="" />
      </replaceConfiguration>
      <replaceConfiguration name="[MB] Replace with multibyte alterantive" text="substr($p$)" recursive="false" caseInsensitive="true" type="PHP" reformatAccordingToStyle="true" shortenFQN="false" replacement="mb_substr($p$, 'UTF-8')">
        <constraint name="__context__" within="" contains="" />
        <constraint name="p" minCount="3" maxCount="3" negateName="true" within="" contains="" />
      </replaceConfiguration>
    </inspection_tool>
0

Please sign in to leave a comment.