0

我的问题是如何从字符中获取子字符串,直到 php 中的字符。

我试过这个:

<?php 
$str = "I love my family";
echo substr($str, 'm', strpos($str, 'y'));

?>

它显示以下错误:

Message: substr() expects parameter 2 to be long, string given

预期结果是:我的家人

4

6 回答 6

1

如果你不特别使用substr strstr可以完成这项工作。

$str = "I love my family";
echo strstr($str, 'm'); // my family
echo strstr($str, 'm', true); // I love

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

于 2013-09-26T05:04:40.220 回答
1

要从“m”开始获取所有内容,您可以使用strstr()

echo strstr('i love my family', 'm'); // my family

您给出的示例不是很好,因为“m”和“y”(包括)之间的字符串是“my”。除此之外,您可以使用它strpos()来查找范围:

$str = 'i love my family';
if (($start = strpos($str, 'm')) !== false && ($stop = strpos($str, 'y', $start)) !== false) {
    echo substr($str, $start, $stop - $start + 1);
}
于 2013-09-26T04:56:24.197 回答
0

更正的代码:

<?php 
$str = "I love my family";
$pos = strpos($str, ' m');
echo substr($str, $pos);
?>
于 2013-09-26T05:00:37.360 回答
0

使用此代码:

<?php 
$str = "I love my family";
echo substr($str, strpos($str, 'm') , strpos($str, 'y')+1);
?>
于 2013-09-26T05:23:08.210 回答
0

这些方面的东西:

$str = "I love my family"; $from_char = 'm'; $to_char = 'y';

//  Find position of the $from_char
    $from_pos = strpos( $str, $from_char );

//  Now find position of blank space after $from_pos
    $blank_space_pos = strpos( $str, ' ',  $from_pos );

//  Find position of $to_char after $blank_space_pos
    $to_pos = strpos( $str, $to_char, $blank_space_pos );

//  Using $from_pos and $to_pos , get the substring
    echo substr( $str, $from_pos, $to_pos-$from_pos+1 );

或者这些:

$str = "I love my family"; $from_char = 'm'; $to_char = 'y';

$from_pos = strpos( $str, $from_char ); // strpos finds first occurrence

$to_pos = strrpos( $str, $to_char ); // strrpos finds last occurrence

echo substr( $str, $from_pos, ( $to_pos-$from_pos+1 ) );

两个输出:

我的家庭

于 2013-09-26T05:05:47.283 回答
-1

substr() 的第二个参数不能是字符串。它应该是整数。看到这个。所以你必须写一些像

   echo substr($str, strpos($str, 'm'), strpos($str, 'y') - strpos($str, 'm') + 1);

(因为第三个参数是长度,而不是位置)

但这也不是解决方案,因为您不仅在字符串的末尾有 'y'(第一个 'y' 在单词 'my' 中,所以这段代码只返回 'my')。所以最好有另一个输出字符串的creteria(不是从'm'到'y',而是从'm'到行尾,例如echo substr($str, strpos($str, 'm'));

于 2013-09-26T04:54:25.480 回答