Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

帮助:解析函数/lcfirst

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

lcfirst是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

lcfirst

将字符串的首字母转换为小写。MediaWiki原生支持。

语法

{{lcfirst: 文本 }}

  • 文本:需要转换的字符串。

示例

  • {{lcfirst: QEWR脸滚键盘 }} → qEWR脸滚键盘
  • {{lcfirst: 你们说的QEWR是什么意思啊? }} → 你们说的QEWR是什么意思啊? (无效案例)

底层代码

来自MediaWiki及其扩展的源代码,运行在服务端。此处仅供快速查阅,便于更充分的挖掘其“特性”。

/** mediawiki-1.37.0\includes\parser\CoreParserFunctions.php
 * @param string $str
 * @return string The string with lowercase conversion applied to the first character
 */
public function lcfirst( $str ) {
	$octetCode = ord( $str );
	// See https://en.wikipedia.org/wiki/ASCII#Printable_characters
	if ( $octetCode < 96 ) {
		// Assume this is an uppercase/uncased ASCII character
		return lcfirst( $str );
	} elseif ( $octetCode < 128 ) {
		// Assume this is a lowercase/uncased ASCII character
		return (string)$str;
	}

	return $this->isMultibyte( $str )
		// Assume this is a multibyte character and mb_internal_encoding() is appropriate
		? mb_strtolower( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 )
		// Assume this is a non-multibyte character and LC_CASE is appropriate
		: lcfirst( $str );
}
代码逻辑:
  • 该函数首先检查字符串的第一个字符的ASCII码值。
  • 如果字符是ASCII字符且为大写,则将其转换为小写。
  • 如果字符是多字节字符(如中文),则使用PHP函数mb_strtolower进行处理。
    • mb_strtolower:根据字符的 Unicode 属性,能转换任意具有“字母”属性的字符,例如元音变音 A(ä)。
  • 对于非ASCII且非多字节字符,直接返回原字符串。

实际用例

一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考