- ベストアンサー
オプションメニューで文字列の一部を表示させるには?
- オプションメニューに保存してあるファイルの文字列の中から一部を取り出して表示させたい方法について教えてください。
- 質問者は$allcategoryという変数に保存されているファイルの内容からカテゴリーを取り出し、オプションメニューに表示したいと考えています。
- 現在のコードではうまくいかないそうです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
$text = '$Cid,$Ccategory'; の部分ですがPHPはシングルクォーテーション('')で囲まれた文字列内の変数やエスケープ文字を展開しません。 よって変数$textの内容は「$Cid,$Ccategory」とい文字列が入る事になります。 変数やエスケープ文字を展開させる場合はダブルクォーテーション("")で囲んでください。 実現したい内容は $cid="抽出したいカテゴリID"; $category = file("データファイル名"); if ( $category ) { $contents .= '<tr bgcolor="#cccccc"><td width="15%">カテゴリーの選択</td><td bgcolor="#ffffff"><select name="' . $cv. ">\"\n"; foreach ( $category as $key => $value) { $category_line = explode("<>", $value); if ( $category_line[0] == $cid ) { $contents .= '<OPTION value="' . $cid '">' . htmlspecialchars( $category_line[1] ) . "</OPTION>\n"; } } $contents .= "</select></td></tr>\n"; } else { $contents .= "カテゴリーを作成してください。\n"; } こうゆう事なのではないかと推測しますが 「保存してあるファイル」のフォーマットはどうなっているのか? この処理はメインルーチン内なのか関数として存在するのか? 情報が少なすぎて回答のしようがないのではないかと思われます。
補足
回答を有難うございます。 すみません。情報が少なすぎですね。(超初心者なのでうまく書き込み出来なくって申し訳ないです。) 保存してあるファイルは他のスクリプトで書き込んでいます。 $cid<>$category<> hhh<>あいうえお<> bbb<>かきくけこ<>という形で、何行かあります。 で、この日本語の方を取り出してオプションメニューに入れたいのです。 >この処理はメインルーチン内なのか関数として存在するのか? function contents() { $id = $_GET[id]; if($id) { $pt1 = "編集"; $e_lines = file("$this->pagedir$ePid.cgi"); for($e=0;$e_lines[$e];$e++) { $ev .= "$e_lines[$e]"; } $ev = str_replace("&","&",$ev); $IDrow = $ePid; $hiddenID = "<input type=\"hidden\" name=\"id\" value=\"$id\">\n"; } else { $pt2 = "新規"; $IDrow = "<input type=\"text\" name=\"id\" size=\"8\" class=\"fk\">";} $contents .= "<script src=\"./insert.js\" type=\"text/javascript\"></script>\n"; $contents .= "<strong>$pt2"."ページ"."$pt1</strong><br>\n"; $contents .= "<form name=\"etr\" action=\"$this->script?mode=new_content\" method=\"post\">\n"; $contents .= "<table width=\"100%\" bgcolor=\"#ffffff\" cellspacing=\"1\" cellpadding=\"1\">\n"; $contents .= "<tr bgcolor=\"#cccccc\"><td width=\"15%\">カテゴリーの選択</td><td bgcolor=\"#ffffff\"><SELECT name=$cv>\n"; for($c=0;$c<=count($cv[$c]);$c++){ $contents .= "<OPTION value=$c>$cv[$c]</OPTION>\n";} $contents .= "</SELECT></td></tr>\n"; $contents .= "<tr bgcolor=\"#cccccc\"><td>ID</td><td bgcolor=\"#ffffff\">$IDrow</td></tr>\n"; $contents .= "<tr bgcolor=\"#cccccc\"><td>ページ名</td><td bgcolor=\"#ffffff\"><input type=\"text\" name=\"title\" value=\"$ePtitle\" size=\"30\" class=\"fk\"></td></tr>\n"; $contents .= "<tr bgcolor=\"#cccccc\"><td>簡易説明</td><td bgcolor=\"#ffffff\"><input type=\"text\" name=\"setsu\" value=\"$ePsetsu\" size=\"40\" class=\"fk\"></td></tr>\n"; $contents .= "<tr bgcolor=\"#cccccc\"><td>内容</td>"; $contents .= "<td bgcolor=\"#ffffff\">"; $contents .= "<textarea wrap=\"off\" name=\"content\" class=\"fk\" style=\"width:98%; height:250px;\" id=\"content\" onfocus=\"get_pos(content);\" onmouseup=\"get_pos(content);\" onkeyup=\"get_pos(content);\">$ev</textarea>";~~~ switch($_GET[mode]) { case contents:~~~~} の中での処理になります。お手数ですがよろしくお願いします。