|
|
 |
substr (PHP 3, PHP 4 , PHP 5) substr -- Return part of a string Descriptionstring substr ( string string, int start [, int length])
substr() returns the portion of string
specified by the start and
length parameters.
If start is non-negative, the returned string
will start at the start'th position in
string, counting from zero. For instance,
in the string 'abcdef', the character at
position 0 is 'a', the
character at position 2 is
'c', and so forth.
例子 1. Basic substr() usage |
<?php
$rest = substr("abcdef", 1); // returns "bcdef"
$rest = substr("abcdef", 1, 3); // returns "bcd"
$rest = substr("abcdef", 0, 4); // returns "abcd"
$rest = substr("abcdef", 0, 8); // returns "abcdef"
// Accessing via curly braces is another option
$string = 'abcdef';
echo $string{0}; // returns a
echo $string{3}; // returns d
?>
|
|
If start is negative, the returned string
will start at the start'th character
from the end of string.
例子 2. Using a negative start |
<?php
$rest = substr("abcdef", -1); // returns "f"
$rest = substr("abcdef", -2); // returns "ef"
$rest = substr("abcdef", -3, 1); // returns "d"
?>
|
|
If length is given and is positive, the string
returned will contain at most length characters
beginning from start (depending on the length of
string). If string is less
than or equal to start characters long, FALSE
will be returned.
If length is given and is negative, then that many
characters will be omitted from the end of string
(after the start position has been calculated when a
start is negative). If
start denotes a position beyond this truncation,
an empty string will be returned.
例子 3. Using a negative length |
<?php
$rest = substr("abcdef", 0, -1); // returns "abcde"
$rest = substr("abcdef", 2, -1); // returns "cde"
$rest = substr("abcdef", 4, -4); // returns ""
$rest = substr("abcdef", -3, -1); // returns "de"
?>
|
|
See also strrchr(),
substr_replace(),
ereg(),
trim(),
mb_substr() and
wordwrap().
06-Jul-2003 08:39
If you want to substring the middle of a string with another and keep the
words intact:
<?php
/**
* Reduce a string by the
middle, keeps whole words together
*
* @param string $string
* @param int $max (default 50)
* @param string $replacement
(default [...])
* @return string
* @author david at ethinkn dot
com
* @author loic at xhtml dot ne
* @author arne dot hartherz
at gmx dot net
*/
function strMiddleReduceWordSensitive
($string, $max = 50, $rep = '[...]') {
$strlen =
strlen($string);
if ($strlen <= $max)
return
$string;
$lengthtokeep = $max - strlen($rep);
$start =
0;
$end = 0;
if (($lengthtokeep % 2) == 0) {
$start = $lengthtokeep / 2;
$end = $start;
} else
{
$start = intval($lengthtokeep / 2);
$end = $start
+ 1;
}
$i = $start;
$tmp_string =
$string;
while ($i < $strlen) {
if ($tmp_string[$i]
== ' ') {
$tmp_string = substr($tmp_string, 0, $i) .
$rep;
$return = $tmp_string;
}
$i++;
}
$i = $end;
$tmp_string = strrev
($string);
while ($i < $strlen) {
if
($tmp_string[$i] == ' ') {
$tmp_string =
substr($tmp_string, 0, $i);
$return .= strrev
($tmp_string);
}
$i++;
}
return
$return;
return substr($string, 0, $start) . $rep . substr($string,
- $end);
}
echo strMiddleReduceWordSensitive ('ABCDEEF GHIJK
LLKJHKHKJHKL HGHFK sdfasdfsdafsdf sadf asdf sadf sad s', 30) .
"\n";
// Returns: ABCDEEF GHIJK[...]asdf sadf sad s (33
chrs)
echo strMiddleReduceWordSensitive ('ABCDEEF GHIJK LLKJHKHKJHKL
HGHFK sdfasdfsdafsdf sadf asdf sadf sad s', 30, '...') .
"\n";
// Returns: ABCDEEF GHIJK...asdf sadf sad s (32
chrs)
?>
| |