45

我需要删除字符串的前 3 个字母和字符串的后 3 个字母。我知道我可以使用 substr() 从某个字符开始,但如果我需要同时删除第一个和最后一个字符,我不确定我是否真的可以使用它。有什么建议么?

4

6 回答 6

103

将负值作为length参数(第三个参数)传递给substr(),例如:

$result = substr($string, 3, -3);

所以这:

<?php
$string = "Sean Bright";
$string = substr($string, 3, -3);
echo $string;
?>

输出:

布里
于 2011-08-12T19:57:31.600 回答
30

利用

substr($var,1,-1)

这将永远是第一个和最后一个,而不必使用 strlen。

例子:

<?php
    $input = ",a,b,d,e,f,";
    $output = substr($input, 1, -1);
    echo $output;
?>

输出:

a,b,d,e,f

于 2014-10-15T18:24:37.780 回答
6

如其他答案所述,您可以使用以下功能之一来实现您的目标:

这取决于您需要删除的字符数量以及删除是否需要具体。但最终substr()完美地回答了你的问题。

也许有人考虑通过字符串取消引用删除第一个/最后一个字符。忘记这一点,它也不会像nullchar 那样工作:

<?php
$string = 'Stackoverflow';
var_dump($string);
$string[0] = null;
var_dump($string);
$string[0] = null;
var_dump($string);
echo ord($string[0]) . PHP_EOL;
$string[1] = '';
var_dump($string);
echo ord($string[1]) . PHP_EOL;
?>

返回:

string(13) "Stackoverflow"
string(13) "tackoverflow"
string(13) "tackoverflow"
0
string(13) "ackoverflow"
0

并且不能unset($string[0])用于字符串:

致命错误:无法在/usr/www/***.php在线取消设置字符串偏移量**

于 2015-04-02T11:01:46.583 回答
2
substr($string, 3, strlen($string) - 6)
于 2011-08-12T19:57:54.177 回答
1

我不知道 php,但你不能取字符串的长度,从位置 3 开始并使用 substr 取长度为 6 的字符吗?

于 2011-08-12T19:57:15.397 回答
1
$myString='123456789';
$newString=substr($myString,3,-3);
于 2011-08-12T19:57:54.067 回答