バグのあるPHPページを "継承"しました。私はこの言語の専門家ではないが、私はバグの起源を見つけたと思う。ループ内で、ページがサーバーにフォーマットされた文字列を送信します。私は、HTMLページ内に見つかった文字列はこの1つのようなものです:PHP:指定された書式設定された文字列の末尾に数値を取得
- :
そう2011-09-19__full_1
、それはそう、私たちは、3つの部分を持っています日付(0,10);
- 文字列(10,6)。
- 最終番号(17,1);
$datagrid[] = array("date"=>substr($post_array_keys[$i], 0, 10),"post_mode"=>substr($post_array_keys[$i], 10, 6),"class_id"=>substr($post_array_keys[$i], 17, 1),"value"=>$_POST[$post_array_keys[$i]]);
は何が起こる:
"class_id"=>substr($post_array_keys[$i], 17, 1)
は次のとおりです。最終的な数は、複数の文字ので、この部分を含めることができます
コードのハンドルこのような状況は以下のとおりです。それは17日から始まる1人のキャラクターだけを取り戻すようだからです(そして、これはウェブサイトに奇妙な振る舞いを引き起こすようです)。
文字列の最後の部分であり、全体の番号を取得するにはこのようにこの行を安全に変更できますか?
"class_id"=>substr($post_array_keys[$i], 17, strlen($post_array_keys[$i])-17);
あなたが聞きたいものはわかりませんが、著者だけがあなたに明確な答えを与えることができます。コード分析に費やされた時間もあります。 @Jon: 'offset = 17'と' length-17'_is_が17から最後までです。しかし、あなたが(@Lotus)3番目のパラメータを省略すると(より最後まで) – KingCrunch
'var_dump(array(" date "=> substr($ post_array_keys [$ i]、 0、10)、 "post_mode" => substr($ post_array_keys [$ i]、10、6)、 "class_id" => substr($ post_array_keys [$ i]、17、1)、 "value" => $ _ POSTあなたの投稿に問題を完全に見てください。 – Timur
@KingCrunchああ、どの機能が混乱しているのだろうか?しかたがない。編集されたta。 あなたはexplode()を使うことができます(二重のアンダースコアは痛みかもしれませんが)。あるいは、正規表現を使うこともできます。言ってるだけ'。 –