ltrim

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

ltrim从字符串开头去除空白(或其他字符)

描述

ltrim(string $string, string $characters = " \n\r\t\v\x00"): string

从字符串开头去除空白(或其他字符)。

参数

string

输入字符串。

characters

您还可以通过 characters 参数指定要去除的字符。只需列出您要去除的所有字符。使用 .. 可以指定字符范围。

返回值

此函数返回一个字符串,其中从 string 的开头去除了空白。如果没有第二个参数,ltrim() 将去除以下字符

  • " " (ASCII 32 (0x20)),普通空格。
  • "\t" (ASCII 9 (0x09)),制表符。
  • "\n" (ASCII 10 (0x0A)),换行符(换行)。
  • "\r" (ASCII 13 (0x0D)),回车符。
  • "\0" (ASCII 0 (0x00)),NUL 字节。
  • "\v" (ASCII 11 (0x0B)),垂直制表符。

示例

示例 #1 ltrim() 的用法示例

<?php

$text
= "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text, $binary, $hello);

print
"\n";


$trimmed = ltrim($text);
var_dump($trimmed);

$trimmed = ltrim($text, " \t.");
var_dump($trimmed);

$trimmed = ltrim($hello, "Hdle");
var_dump($trimmed);

// 去除 $binary 开头的 ASCII 控制字符
//(从 0 到 31 包括)
$clean = ltrim($binary, "\x00..\x1F");
var_dump($clean);

?>

上面的示例将输出

string(32) "        These are a few words :) ...  "
string(16) "    Example string
"
string(11) "Hello World"

string(30) "These are a few words :) ...  "
string(30) "These are a few words :) ...  "
string(7) "o World"
string(15) "Example string
"

参见

  • trim() - 从字符串开头和结尾去除空白(或其他字符)
  • rtrim() - 从字符串结尾去除空白(或其他字符)

添加备注

用户贡献备注 8 个备注

tavi undersc 10 from yahoocom
8 年前
当使用 $character_mask 时,修剪会在第一个不在该掩码上的字符处停止。

因此,在 $string = "Hello world" 示例中,使用 $character_mask = "Hdle",ltrim($hello, $character_mask) 的执行过程如下
1. 检查 "Hello world" 中的 H => 它在 $character_mask 中,因此将其去除
2. 检查 "ello world" 中的 e => 它在 $character_mask 中,因此将其去除
3. 检查 "llo world" 中的 l => 它在 $character_mask 中,因此将其去除
4. 检查 "lo world" 中的 l => 它在 $character_mask 中,因此将其去除
5. 检查 "o world" 中的 o => 它不在 $character_mask 中,退出函数

剩余字符串为 "o world"。

希望这能帮助到某些人,因为我曾经在这个函数上遇到了一些困惑。
Usamah M dot Ali (usamah1228 at gmail dot com)
16 年前
对于使用阿拉伯语、希伯来语等从右到左语言的用户来说,值得一提的是 ltrim()(代表左修剪)和 rtrim()(代表右修剪)不会按上下文工作。命名法在语义上是错误的。因此,在 RTL 脚本中,ltrim() 将从右侧(即 RTL 字符串的开头)修剪文本,而 rtrim() 将从左侧(即 RTL 字符串的结尾)修剪文本。
dzek dot remove_this at dzek dot eu
13 年前
伙计们,如果 += 0 有时会产生错误的值,而 preg_replace 占用 CPU 资源,那么就坚持使用此页面上描述的主要函数,并使用
<?php
$value
= ltrim($value, '0');
?>
应该是最快捷、最可靠的方式。
我认为所有这些评论可能会误导查看此页面的初学者 - 它们有点像使用魔术技巧来重新发明轮子。
mroeling at exed dot nl
10 年前
@scion4581

问题是字符掩码(_stw 在你的情况下)不是一个字面字符串,而是一个字符集合。因此,_stw 中的所有字符都会被去除。在你的情况下,这包括 weight 中的 w 也是。
Mauro
6 年前
我注意到一件事。

假设您需要从 "015"、"002" 等字符串中去除前导零,并将其转换回数字,例如使用 intval。

假设您还需要将 "000" 转换为数字。

在这种情况下

$trimmedString = ltrim('000', '0');

$trimmedString 的值将为 NULL(我认为文档应该提到这一点)。

无论如何,我最初以为我需要对此 "000" 进行条件检查,但我发现 intval(NULL) 返回 0(这在 intval 的文档中没有,但在注释中提到)
juan at ecogomera dot com
10 年前
+=0 对 "0000-5" 之类的字符串无效。结果为 0
John Sherwood
18 年前
要删除前导/尾随零(例如 "0123.4560"),进行 += 0 比 trim 技巧更容易。
Mike
13 年前
请记住 preg_replace() 使用的资源量。
如果您需要解析大量数据,我建议使用简单的 if 语句。
<?php
function remove_leading_zeros_from_number($number_string) {
$limit = 9000.1
$temp
= $number
(float) $temp;
if (
$number < $limit) {
$number += 0;
} else {
preg_replace('~^[0]*([1-9][0-9]*)$~','$1',$number_string)
}
}
?>

代码未经测试,但可能有效。
To Top