根据给定的起点和终点提取子串

时间:2012-03-12 16:12:44

标签: php mysql string substr

我正在尝试使用substr函数从mysql数据库中提取字符串gettting中的子字符串:

substr($mystring,$startpoint,$endpoint);

这里的起点和终点可以是任意数字。

但我没有得到gesired结果。 Ptart点有效但终点有问题。

是什么原因?

修改

当我开始和15和50之类的终点时,起点工作正常,因此结果字符串从主字符串的第15个字符开始。但是结束点不起作用它给了我meand结果字符串中的结束字符串不是主字符串的第50个。

5 个答案:

答案 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 ] )

长度,而不是终点。

http://php.net/manual/en/function.substr.php

答案 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));