When to use a php function vs a drupal_ equivalent function? I come from update my Coder module to the v1.3 and when I go to check one custom module I see the following message:


  Line 71: in most cases, replace the string function with the drupal_
  equivalent string functions

$node_type = substr($form_id, 0, -10);

  
  Line 187: in most cases, replace the string function with the drupal_ equivalent string functions

$info-&gt;language = ($info-&gt;language == 'und' || empty($info-&gt;language)) ? t('Undetermined') : ucfirst($info-&gt;language);



So, why I need to use the drupal_substr() and drupal_ucfirst() in this case? And in general why to use the drupal_ equivalent functions when we have the php functions?
Most PHP string function don't handle unicode characters. For this you need to use their mb_* variants, which are (were?) not always available on some host. The drupal_* variants ensure unicode compatibility. They wrap mb_* functions and provide pure PHP implementations for when they are not available.

So, this recommendation is there to ensure portability of your code across hosts.