很多时候我们想要使用字符串,但是它们在开头或结尾被不需要的字符填充。php 已经定义了特定的函数,我们可以使用这些函数轻松地修剪这些字符串。
在这个快速提示中,我们将讨论您可能会遇到的两种常见的字符串修剪情况。第一个涉及从字符串的一端或两端删除特定字符。第二个涉及根据我们要从两端删除多少字符来修剪字符串。
修剪字符串以删除一组字符
PHP 中有三个不同的修整函数,分别称为ltrim()、rtrim()和trim()。它们分别从左端、右端或两端删除空格或任何其他字符集。
如果您没有将要删除的字符列表作为第二个参数提及,这些函数将删除空格字符,如空格 ( " ")、制表符 ( "\t")、换行符 ( "\n")、回车符 ( "\r")、空字节 ( "\0") 和垂直制表符 ( "\v")。
这些函数将修剪的字符数没有限制。换句话说,只要字符串的两端包含任何指定的字符,它们就会继续修剪字符串。
以下是这些功能的一些示例。我们正在修剪的主要字符串将在两端包含空格、制表符或换行符的组合。
<?php $strings = [" Hi, are you alright? ", " I am going for a walk. ", " That was amazing!!! "]; foreach($strings as $string) { var_dump(ltrim($string)); } /* Output from ltrim() string(25) "Hi, are you alright? " string(23) "I am going for a walk. " string(25) "That was amazing!!! */ foreach($strings as $string) { var_dump(rtrim($string)); } /* Output from rtrim() string(22) " Hi, are you alright?" string(25) " I am going for a walk." string(24) " That was amazing!!!" */ foreach($strings as $string) { var_dump(trim($string)); } /* Output from trim() string(20) "Hi, are you alright?" string(22) "I am going for a walk." string(19) "That was amazing!!!" */ ?>
如您所见,ltrim()删除字符串左侧的所有空格,同时保持右端不变。同样,rtrim()删除字符串右侧的所有空格,同时保持左端不变。
重要的是要记住,只有在字符恰好位于结尾或开头时才会发生修剪。这是一个例子:
<?php $string = "I am doing very good! How are you? "; var_dump(trim($string)); /* string(51) "I am doing very good! How are you?" */ ?>
如果您将它们作为 、 或 的第二个参数传递,您也可以修剪任何其他ltrim()字符rtrim()集trim()。
<?php $string = " 123131311211 I am doing very good! How are you? 1231312112 12132321"; var_dump(trim($string, "123")); /* string(65) " 123131311211 I am doing very good! How are you? 1231312112 " */ ?>
这一次,我们指定我们只想修剪字符 1、2 和 3。因此,trim()保留空白不变。
<?php $string = "12121231409874509121208409812112128311213"; var_dump(trim($string, "123")); /* string(27) "409874509121208409812112128" */ ?>
同样,在第二个示例中,trim一旦发现我们要求它修剪的字符不匹配,就停止从两端删除数字。
<?php $string = "12121231409874509121208409812112128311213"; var_dump(trim($string, "1..9")); /* string(16) "0987450912120840" */ ?>
第三个示例演示了如何使用 ( ..) 指定要修剪的字符范围。这样,我们可以避免列出顺序出现的所有字符。
修剪字符串以删除特定数量的字符
就像修剪一组特定的字符一样,PHP 也有专门的函数来修剪特定数量的字符。
该substr($string, $offset, $length)功能最适合这项工作。它接受三个参数并返回一个子字符串。第一个参数是要修剪的字符串。$offset参数确定返回子串的开始,参数$length确定子串的长度。
我们可以根据字符数控制$offset和$length修剪主字符串的值。
$length您可以通过仅指定偏移量并在调用时省略参数来从左侧修剪字符串substr()。在这种情况下,substr()将返回一个从偏移量开始直到字符串结尾的子字符串。
$offset您可以通过将值设置为 0 并将其设为$length负数,从右侧修剪字符串。$length这将从主字符串的右端删除字符数。
您可以为 指定一个非零正值$offset和一个负值,$length以使substr()行为像trim()并从两端删除特定数量的字符。
这是一个使用该substr()函数修剪字符串的示例:
<?php $string = "I will try to trim this sentence in different ways."; var_dump(substr($string, 10)); // string(41) " to trim this sentence in different ways." var_dump(substr($string, -10)); // string(41) "I will try to trim this sentence in diffe" var_dump(substr($string, 10, -10)); // string(31) " to trim this sentence in diffe" ?>
最后的想法
在这个快速提示中,我们学习了如何在 PHP 中根据特定的集合或特定数量的字符来修剪字符串