2013-09-26 35 views
0

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

我已经试过这样:

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

?> 

它显示了以下错误:

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

预期的结果是:我的家庭SUBSTR的

+0

除非功课(这是罚款),它不可能成为一个现实世界的例子,这将真正帮助您获得一个可用的答案。 – 2013-09-26 05:01:48

+2

不是从字符'm'到字符'y'返回'my'?是从字符结束你需要什么? – bansi

回答

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

两个输出:

my family

-1

第二个参数()不能是字符串。它应该是整数。 See this。 所以,你必须写类似

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

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

但这不是解决办法也一样,因为你有“Y”不仅在字符串的结尾(首先'y'在'my'字中,所以这段代码只返回'my')。所以最好有另一个输出字符串(不是从'm'到'y',而是从'm'到行尾,例如echo substr($str, strpos($str, 'm'));

+0

是的,他知道这一点。 – 2013-09-26 04:56:11

1

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

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

你给的例子是不太好,因为“M”和“Y”(含)之间的字符串是“我”。这且不说,你可以使用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); 
} 
0

更正代码:

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

使用此代码:

<?php 
$str = "I love my family"; 
echo substr($str, strpos($str, 'm') , strpos($str, 'y')+1); 
?> 
相关问题