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

「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 に答える
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 に答える
0

このコードを使用しました:

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

substr() の 2 番目のパラメーターは文字列であってはなりません。整数でなければなりません。これを参照してください。だからあなたは次のようなものを書く必要があります

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

(3 番目のパラメーターは位置ではなく長さであるため)

しかし、これも解決策ではありません。文字列の末尾だけでなく 'y' があるためです (最初の 'y' は単語 'my' にあるため、このコードは 'my' のみを返します)。したがって、出力文字列の別の基準を設定することをお勧めします (たとえば、「m」から「y」までではなく、「m」から行末までecho substr($str, strpos($str, 'm'));) 。

于 2013-09-26T04:54:25.480 に答える