私の問題は、phpで文字から文字まで部分文字列を取得する方法です。
私はこれを試しました:
<?php
$str = "I love my family";
echo substr($str, 'm', strpos($str, 'y'));
?>
次のエラーが表示されます。
Message: substr() expects parameter 2 to be long, string given
期待される結果は : 私の家族
私の問題は、phpで文字から文字まで部分文字列を取得する方法です。
私はこれを試しました:
<?php
$str = "I love my family";
echo substr($str, 'm', strpos($str, 'y'));
?>
次のエラーが表示されます。
Message: substr() expects parameter 2 to be long, string given
期待される結果は : 私の家族
「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);
}
使用にこだわらない場合substr
strstr
は、仕事をすることができます。
$str = "I love my family";
echo strstr($str, 'm'); // my family
echo strstr($str, 'm', true); // I love
このコードを使用しました:
<?php
$str = "I love my family";
echo substr($str, strpos($str, 'm') , strpos($str, 'y')+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'));
) 。