我的问题是如何从字符中获取子字符串直到php中的字符。
我试过这个:
<?php
$str = "I love my family";
echo substr($str, 'm', strpos($str, 'y'));
?>
显示以下错误:
Message: substr() expects parameter 2 to be long, string given
预期结果是:我的家人
答案 0 :(得分: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);
}
答案 1 :(得分:0)
更正后的代码:
<?php
$str = "I love my family";
$pos = strpos($str, ' m');
echo substr($str, $pos);
?>
答案 2 :(得分:0)
如果您不熟悉使用substr
strstr
可以完成这项工作。
$str = "I love my family";
echo strstr($str, 'm'); // my family
echo strstr($str, 'm', true); // I love
答案 3 :(得分: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 ) );
两个输出:
我的家人
答案 4 :(得分:0)
使用此代码:
<?php
$str = "I love my family";
echo substr($str, strpos($str, 'm') , strpos($str, 'y')+1);
?>
答案 5 :(得分:-1)
substr()的第二个参数不能是字符串。它应该是整数。 See this。 所以你必须写一些像
这样的东西 echo substr($str, strpos($str, 'm'), strpos($str, 'y') - strpos($str, 'm') + 1);
(因为第三个参数是长度,而不是位置)
但这也不是解决方案,因为你有&#39; y&#39;不仅在字符串的末尾(第一个&#39; y&#39;在单词&#39;我的&#39;,因此此代码仅返回&#39; my&#39;)。因此,最好还有另一个输出字符串(不是从&#39;到&#39; y&#39;,而是从&#39; m&#39;到最后一行,例如{ {1}})