PHPで、50文字を超える長さの文字列のみを表示し、130文字を超えて表示されないように切り捨て、結果を1つに制限する機能は何ですか?
たとえば、結果セットに 30 行あるとしますが、これらのパラメーターを持つ最新の行のみを表示したいとします。最新の行が 25 文字の場合、表示されません。文字列の長さが 50 文字以上の最新のもののみを表示する必要があります。
PHPで、50文字を超える長さの文字列のみを表示し、130文字を超えて表示されないように切り捨て、結果を1つに制限する機能は何ですか?
たとえば、結果セットに 30 行あるとしますが、これらのパラメーターを持つ最新の行のみを表示したいとします。最新の行が 25 文字の場合、表示されません。文字列の長さが 50 文字以上の最新のもののみを表示する必要があります。
SQL クエリを使用します。最新のものを見つけるには、auto_increment 主キー (id と呼ぶのは間違っています) または行が作成された日付/時刻 (time_created など) のいずれかで max が必要です。
だから私は次のテーブルを想定しています:id(int)、stringVal(string、char()、varchar()、何でも)
SELECT MAX(id), SUBSTRING(stringVal, 1, 130)
FROM yourTable
WHERE LENGTH(stringVal) > 30
必要に応じて、id を時間フィールドに置き換えます。それらのいずれかがなければ、最新のものを見つけるのに苦労するでしょうが、いつでも任意に 1 つの行を選択できます。
--編集-- PHP で mysql 関数を使用して上記のクエリを実行し、必要な出力をフェッチするサンプル
$sql = "SELECT MAX(id), SUBSTRING(stringVal, 1, 130) FROM yourTable WHERE LENGTH(stringVal) > 30";
$r = mysql_query($sql, $conn); //im hoping $conn or something like it is already set up
$row = mysql_fetch_assoc($r);
$desiredString = $row['stringVal'];
このようなことは、最初に最新のアイテムで並べ替えてデータを取得することを確認する必要があります. break ステートメントは、条件に一致する最初の結果が見つかった後にループが終了することを保証します...
foreach($array_returned_from_query as $row)
{
if(strlen($row) > 50)
{
echo substr($row, 0, 130);
break;
}
}