strtolower

(PHP 3, PHP 4, PHP 5)

strtolower -- Make a string lowercase

Description

string strtolower ( string str )

Returns string with all alphabetic characters converted to lowercase.

Note that 'alphabetic' is determined by the current locale. This means that in i.e. the default "C" locale, characters such as umlaut-A () will not be converted.

例子 1. strtolower() example

<?php
$str
= "Mary Had A Little Lamb and She LOVED It So";
$str = strtolower($str);
echo
$str; // Prints mary had a little lamb and she loved it so
?>

注: 本函数可安全用于二进制对象。

See also strtoupper(), ucfirst(), ucwords() and mb_strtolower().


add a note add a note User Contributed Notes
spiceee ddotty spiceee com
07-Mar-2006 08:53
If you ever need to strtolower a string with href tags on it and doesn't want to mess with the characters inside a tag, this is for you.

<?php

function loweroutsidetags ($str) {
  
$chars = preg_split ("//", $str);
  
$tolower = true;
  
$str = '';

   foreach (
$chars as $k) {
       if (
$k == '<') { $tolower = false; }
       if (
$tolower) { $k = strtolower ($k); }
      
$str .= $k;   
       if (
$k == '>') { $tolower = true; }
   }
   return
$str;
}

?>

this:
echo loweroutsidetags('aALalala <a href="?q=CASEsENSITIVINESSinURLSareSTUPID">')

will give:
aalalala <a href="?q=CASEsENSITIVINESSinURLSareSTUPID">
red at iklanumum dot com
24-Feb-2006 10:43
I've seen this as a common use from script developers, so I would like to share the alternative way to compare 2 string (CASE INSENSITIVE) without using strtolower for faster process.

Use strcasecmp() for comparison purpose rather than comparing uncertain case of 2 string variables, because strcasecmp() is approximately 60% faster, moreover, the greater its string length the greater the difference,!
Ex. case :
$var1;    -> could be a mixture of upper & lower case
$var2;    -> could be a mixture of upper & lower case

To compare whether $var1 is exactly the same as $var2 (case insensitive manner):
Use -> if (strcasecmp($var1,$var2)==0)
rather than -> if (strtolower($var1)==strtolower($var2))
Patrick
20-Jan-2006 02:57
If you're considering using the below unhtmlentities function from phpContrib, I would suggest this one as an alternative:

<?php
function unhtmlentities($string)
{
  
// replace numeric entities
  
$string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
  
$string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);
  
// replace literal entities
  
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
  
$trans_tbl = array_flip($trans_tbl);
   return
strtr($string, $trans_tbl);
}
?>

That was copied exactly from the html_entity_decode manual page.  It'll handle numeric entities correctly, the below function won't.
fackelkind
11-Jan-2006 04:03
Nifty? :D

<?php
      
function is_lowercase ($str){
               return (
$str == strtolower ($str));
       }
?>
mhuggins57 at yahoo dot com
20-Jul-2005 07:04
There's a ucfirst "function" to make the first character uppercase, but there's no "lcfirst" function to make the first character lowercase.  Here's my own code to accomplish this.

<?
function lcfirst($str) {
   return
strtolower(substr($str, 0, 1)) . substr($str, 1);
}
?>

I found this particularly useful for generating XML nodes with the Reflection class.
kmcdermott at perimeterinstitute dot ca
09-Dec-2004 05:04
To do case insensitive comparisons in a database, strtolower() can be a quick and dirty solution:

$Sql = "SELECT * FROM tablename WHERE LOWER(column_name) = '".strtolower($my_var)."'";
phpContrib (A T) esurfers d o t c o m
25-Sep-2004 02:07
<?php

$b
=html_entity_decode(strtolower(htmlentities($a)));

?>

will convert to lowercase most accented vocals
(it will convert  into &Agrave; into &agrave; into )

This is not fast and clean code, it is just a quick oneliner to help you if you need a quick way to do it



Users with older versions of PHP can use:
$b=unhtmlentities(strtolower(htmlentities($a)));

// with unhtmlentities() as defined in the html_entity_decode() manual page:

function unhtmlentities ($string) {
   $trans_tbl =get_html_translation_table (HTML_ENTITIES );
   $trans_tbl =array_flip ($trans_tbl );
   return strtr ($string ,$trans_tbl );
}
bkimble at ebaseweb dot com
20-Jan-2003 02:39
Heres a small function I wrote to stop people from submitting data that is ALL IN CAPS SO THEY CAN GET MORE ATTENTION THAT THE REST OF THE USER SUBMITTED DATA on my website :) If you can make it better, by all means do so. This function splits up words delimited by a space, and makes only the first letter of each word capitalized. You can easily modify it so it's only the very first word of the string. I've also added some exceptions so you don't make things like roman numerals look like "Iii" or "Xcmii" or something.

function RemoveShouting($string)
{
 $lower_exceptions = array(
       "to" => "1", "a" => "1", "the" => "1", "of" => "1"
 );
 
 $higher_exceptions = array( 
       "I" => "1", "II" => "1", "III" => "1", "IV" => "1", 
       "V" => "1", "VI" => "1", "VII" => "1", "VIII" => "1",
       "XI" => "1", "X" => "1"
 );
 
 $words = split(" ", $string);
 $newwords = array();
 foreach ($words as $word)
 {
  if (!$higher_exceptions[$word]) $word = strtolower($word);
  if (!$lower_exceptions[$word]) $word[0] = strtoupper($word[0]);
  array_push($newwords, $word);
 }
 return join(" ", $newwords);
}

BK
tty01_at_rambler_dot_ru
20-Sep-2002 10:58
Another solution for Double-Byte-Characters, based on iconv() functions, not sensible to the current locale, works on win32.

/* Converts charset */
function myConvertCharset($str, $from, $to)
{
   if(@function_exists('iconv'))
   {
       return iconv($from, $to, $str);
   }
   else if(@function_exists('recode_string'))
   {
       return recode_string($from . '..'  . $to, $str);
   }
   else
   {
       print "function iconv not exists";
       return $str;
   }
}
/* Converts a string to lowercase */
function my_strtolower($s)
{
   $t = "windows-1251";
   $d = "UTF-8";
   return myConvertCharset(strtolower(myConvertCharset($s, $d, $t)), $t, $d);
}

print my_strtolower("  Uppercase");
13-Sep-2002 08:17
This function is sensible to the current locale, namely the LC_CTYPE category (the default LC_CTYPE category is set from the LANG environment variable or by an explicit LC_CTYPE setting, but it can be overriden by the LC_ALL environment setting). If no locale setting is done in the enironment, the default locale will be C, for which the lowercase/uppercase conversion is based on the default character set of the system: this may convert only ASCII letters, or also ISO-8859-1 letters depending on the system...