2013-09-26 34 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); 
?> 
相關問題