我正在尝试使用substr
函数从mysql数据库中提取字符串gettting中的子字符串:
substr($mystring,$startpoint,$endpoint);
这里的起点和终点可以是任意数字。
但我没有得到gesired结果。 Ptart点有效但终点有问题。
是什么原因?
修改
当我开始和15和50之类的终点时,起点工作正常,因此结果字符串从主字符串的第15个字符开始。但是结束点不起作用它给了我meand结果字符串中的结束字符串不是主字符串的第50个。
答案 0 :(得分:3)
我的猜测是你将端点和长度混为一谈。 substring()
的第三个参数是字符串的长度 - 因此从起点开始的字符数。不是最后一个字符的索引。
<?php
$str = "A short string";
echo substr($str, 2, 2); // Prints sh
echo substr($str, 2, 4); // Prints shor
?>
如果你想指定一个终点,你可以通过从你的点中减去起点来计算长度:
<?php
$startpoint = 2;
$endpoint = 5;
$str = "A short string";
echo substr($str, $startpoint, ($endpoint - $startpoint)); // Prints sho
?>
答案 1 :(得分:1)
第三个参数用于指定起点的长度。
但是你想在第三个参数中得到字符串直到值,所以两者都不同。
尝试下面它会起作用。
substr($string,$startpoint,($endpoint-$startpoint));
答案 2 :(得分:0)
string substr ( string $string , int $start [, int $length ] )
长度,而不是终点。
答案 3 :(得分:0)
string substr(string $ string,int $ start [,int $ length])
这意味着:
<?php
$text = "foobar text";
$startpoint = 0;
$endpoint = $startpoint + strlen($text);
echo substr($text, $startpoint, $endpoint);
?>
答案 4 :(得分:0)
您应该减去$endpoint-$startpoint
并将其作为第三个参数传递以获得所需的输出。
如下所示:
substr($mystring,$startpoint,($endpoint-$startpoint));