strtolower

(PHP 4, PHP 5, PHP 7, PHP 8)

strtolower将字符串转换为小写

说明

strtolower(string $string): string

返回 string,其中所有 ASCII 字母字符都转换为小写。

范围在 "A" (0x41) 到 "Z" (0x5a) 之间的字节将通过为每个字节值添加 32 来转换为相应的小写字母。

这可用于转换以 UTF-8 编码的字符串中的 ASCII 字符,因为多字节 UTF-8 字符将被忽略。要转换多字节非 ASCII 字符,请使用 mb_strtolower().

参数

string

输入字符串。

返回值

返回小写字符串。

变更日志

版本 说明
8.2.0 大小写转换不再依赖于使用 setlocale() 设置的区域设置。只会转换 ASCII 字符。

范例

范例 #1 strtolower() 范例

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

注释

注意: 此函数是二进制安全的。

参见

添加注释

用户贡献注释 16 个注释

113
marcin at maydesign dot pl
14 年前
strtolower(); 对波兰语字符无效

<?php strtolower("mĄkA"); ?>
将返回:mĄka;

最佳解决方案 - 使用 mb_strtolower()

<?php mb_strtolower("mĄkA",'UTF-8'); ?>
将返回:mąka
36
coder at bulgaria dot bg
15 年前
对于西里尔字母和 UTF 8,使用 mb_convert_case

示例

<?php
$string
= "Австралия";
$string = mb_convert_case($string, MB_CASE_LOWER, "UTF-8");
echo
$string;

//输出为: австралия
?>
25
helvete at bahno dot net
9 年前
值得注意的是
<?php
var_dump
(strtolower(null))
?>
返回
string(0) ""
10
dbers26 at gmail dot com
15 年前
函数 arraytolower 将创建重复条目,因为键区分大小写。

<?php
$array
= array('test1' => 'asgAFasDAAd', 'TEST2' => 'ASddhshsDGb', 'TeSt3 '=> 'asdasda@asdadadASDASDgh');

$array = arraytolower($array);
?>
/*
数组
(
[test1] => asgafasdaad
[TEST2] => ASddhshsDGb
[TeSt3] => asdasda@asdadadASDASDgh
[test2] => asddhshsdgb
[test3] => asdasda@asdadadasdasdgh
)
*/

我更喜欢这种方法

<?php
function arraytolower($array, $include_leys=false) {

if(
$include_leys) {
foreach(
$array as $key => $value) {
if(
is_array($value))
$array2[strtolower($key)] = arraytolower($value, $include_leys);
else
$array2[strtolower($key)] = strtolower($value);
}
$array = $array2;
}
else {
foreach(
$array as $key => $value) {
if(
is_array($value))
$array[$key] = arraytolower($value, $include_leys);
else
$array[$key] = strtolower($value);
}
}

return
$array;
}
?>

当以这种方式使用时

<?php
$array
= $array = array('test1' => 'asgAFasDAAd', 'TEST2' => 'ASddhshsDGb', 'TeSt3 '=> 'asdasda@asdadadASDASDgh');

$array1 = arraytolower($array);
$array2 = arraytolower($array,true);

print_r($array1);
print_r($array2);
?>

将给出以下输出

数组
(
[test1] => asgafasdaad
[TEST2] => asddhshsdgb
[TeSt3] => asdasda@asdadadasdasdgh
)
数组
(
[test1] => asgafasdaad
[test2] => asddhshsdgb
[test3] => asdasda@asdadadasdasdgh
)
5
patricia at steuerungb dot de
16 年前
如果您不确定当前的区域设置是如何设置的,您可能会发现以下函数很有用。它是用于 utf8 格式文本的 strtolower

<?php
function strtolower_utf8($inputString) {
$outputString = utf8_decode($inputString);
$outputString = strtolower($outputString);
$outputString = utf8_encode($outputString);
return
$outputString;
}
?>

它并不适合所有场合,但它确实很方便。我用它来降低德语的“变音符”,比如 ä 和 ö。
2
mhuggins57 at yahoo dot com
19 年前
有一个 ucfirst“函数”可以将第一个字符大写,但没有“lcfirst”函数可以将第一个字符小写。这是我自己编写的代码来实现这一点。

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

我发现这在使用 Reflection 类生成 XML 节点时特别有用。
2
rodrigoATsistemasparainternetDOTcomDOTbr
15 年前
<?php
function fullLower($str){
// 转换为实体
$subject = htmlentities($str,ENT_QUOTES);
$pattern = '/&([a-z])(uml|acute|circ';
$pattern.= '|tilde|ring|elig|grave|slash|horn|cedil|th);/e';
$replace = "'&'.strtolower('\\1').'\\2'.';'";
$result = preg_replace($pattern, $replace, $subject);
// 从实体转换回字符
$htmltable = get_html_translation_table(HTML_ENTITIES);
foreach(
$htmltable as $key => $value) {
$result = ereg_replace(addslashes($value),$key,$result);
}
return(
strtolower($result));
}

echo
fullLower("Ã É Ò Õ ÚÙÛ");

// 结果 ã é ò õ úùû
// 摘自 strtoupper 手册上的 fullUpper
?>
0
rok dot kralj at gmail dot com
17 年前
斯洛文尼亚字符

<?php
function strtolower_slovenian($string)
{
$low=array("Č" => "č", "Ž" => "ž", "Š" => "š");
return
strtolower(strtr($string,$low));
}

?>
0
marco at recchiuti dot it
17 年前
也许它不是那么优雅,但它有效。
这只是一个快速的想法,也是我需要的。
任何针对其他字符(例如!,?等等)的黑客都应该有所帮助。

function RemoveShouting($string)
{
$frase = "";
$astri = explode(".", $string);
foreach ($astri as $elem)
$frase .= " ".ucfirst(trim(strtolower($elem))).". ";

return trim($frase);
}

干杯!
M
-1
Patrick
18 年前
如果你考虑使用 phpContrib 中的以下 unhtmlentities 函数,我建议使用这个作为替代方案

<?php
function unhtmlentities($string)
{
// 替换数字实体
$string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
$string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);
// 替换文字实体
$trans_tbl = get_html_translation_table(HTML_ENTITIES);
$trans_tbl = array_flip($trans_tbl);
return
strtr($string, $trans_tbl);
}
?>

这段代码是从 html_entity_decode 手册页上直接复制的。它将正确处理数字实体,而下面的函数则不会。
-2
bkimble at ebaseweb dot com
21 年前
我写了一个小函数,用来阻止人们提交全部大写的文本,这样他们就可以在我网站上获得比其他用户提交的数据更多的关注:)如果你能把它做得更好,那就请你这样做吧。这个函数将以空格为分隔符将单词分割开来,并只将每个单词的首字母大写。你可以很容易地修改它,使其只将字符串的第一个单词大写。我还添加了一些例外,这样你就不会让罗马数字看起来像“Iii”或“Xcmii”之类的。

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
-3
RCube
13 年前
为了将整个数组转换为小写,我更喜欢这种方法;

<?php
function arraytolower(array $array, $round = 0){
return
unserialize(strtolower(serialize($array)));
}
?>

3 行代码似乎比 10-40 行代码的开销要少得多。
如果这种方法有任何内在问题,请发布。
-8
leha_grobov
15 年前
支持大多数语言(包括俄语、法语等)的 strtolower 版本

<?php
function strtolower_utf8($string){
$convert_to = array(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
"v", "w", "x", "y", "z", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï",
"ð", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "ù", "ú", "û", "ü", "ý", "а", "б", "в", "г", "д", "е", "ё", "ж",
"з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы",
"ь", "э", "ю", "я"
);
$convert_from = array(
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U",
"V", "W", "X", "Y", "Z", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï",
"Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж",
"З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ъ",
"Ь", "Э", "Ю", "Я"
);

return
str_replace($convert_from, $convert_to, $string);
}
?>
-4
kmcdermott at perimeterinstitute dot ca
19 年前
在数据库中进行大小写不敏感的比较,`strtolower()` 可以作为一个快速而简陋的解决方案。

$Sql = "SELECT * FROM tablename WHERE LOWER(column_name) = '".strtolower($my_var)."'";
-10
Daniel Klein
8 年前
当区域设置被设置为“utf8”或“C”时,我无法让 `strtolower()` 转换编码为 UTF-8 的重音字符,所以这里是我的解决方法。

<?php
function tolower($string) {
if (
$old_locale = setlocale(LC_CTYPE, 0)) {
// 'fr_FR.ISO-8859-1' for *nix, 'French_France.1252' fallback for Windows
if ($newlocale = setlocale(LC_CTYPE, 'fr_FR.ISO-8859-1', 'French_France.1252')) {
preg_match('/\.(?<encoding>.+)$/', $newlocale, $match);
$string = utf8_encode(strtolower(utf8_decode($string)));
}
setlocale(LC_CTYPE, $old_locale);
}
return
$string;
}

print(
tolower('DÉJÀ-VU')); // prints déjà-vu
?>

如果你想使用除法语以外的语言,请更改语言-国家代码。
-11
spiceee ddotty spiceee com
18 年前
如果你需要对包含 href 标签的字符串进行 strtolower 操作,并且不希望修改标签内的字符,那么这个代码适合你。

<?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;
}

?>

这个
echo loweroutsidetags('aALalala <a href="?q=CASEsENSITIVINESSinURLSareSTUPID">')

将输出
aalalala <a href="?q=CASEsENSITIVINESSinURLSareSTUPID">
To Top