• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPの記述方法について教えて下さい。)

PHPの記述方法について

このQ&Aのポイント
  • PHPの記述方法について教えて下さい。現在、PHPを勉強しているのですが、以下の記述方法が分かりません。ご教授の程、お願い申し上げます。
  • text1とtext2の変化していないところを参照元として、@前はtext2の文字を活かし、@後はtext1の文字を活かしたいです。最終的に、text2をweb表示orダウンロード出来る様にしたいです。
  • 現在、このファイルの処理に困っておりますので、どうか宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

text1を読みこみ、変化しない部分(仮に$k1)と、@の後(仮に$v)を、正規表現を使うなり、文字数指定で切り出すなり、して取り出す。 これは配列(仮に$a)にでも $a[$k1] =$v ; とかで入れておく。 次にtext2を読みこみ、1行の文字列(仮に$l)の、変化しない部分(仮に$k2)が、$aのキーにあったら(array_key_exists関数で調べられる)、 $l . "@" . $a[$k2] みたいにして継げたものを、画面やファイルに出力するなり、変数や配列に保存するなりする。 というのが一般的なやりかただとは思うのですが、 問題は ・「変化しないところ」ってどこ? 質問の例では、常に最初の2文字が「変化しない」という風になっていますが、 text1:ABC と text2:VBC があった場合 同じように最初の2文字が変化しない箇所なので「 AB+?とPB+?」で別と解釈するのか、 このような場合はAとPが変化したと考え「?+BCと?+BC」で同じと解釈するのか、 で処理が変ってきます。もちろん、後者のほうが複雑です。 ・「変化しないところ」の文字列は重複する?しない? text1に ABC@DEF ABW@XYZ のようなキー(AB)が重複するようなものがあるのか、あるのなら、test2:ABSに対して ABS@DEFなのかABS@XYZなのか、その両方なのか で、やはり処理が変ってきます。当然、後者が複雑です。

himedaisan
質問者

補足

ご回答有難うございます。 お手間お掛けして、申し訳ありません。 昨日からPHPの勉強を始めたばかりで、 本来は日本語表記なのに、例では英字で表現するなどの 不手際がありました。改めて本来のデータを表記させていただきます。 何卒、ご指導の程、お願い申し上げます。 (2種類のテキストがあります) ■text1 2 佐藤 A B@高校→大学 6 田中 E D@大学→社会人 9 鈴木 B E@会社 4 加藤 E E@高校 上記の様な列(データ)が数百件あります。 ■text2 2 佐藤 A A 6 田中 B C 9 鈴木 D E 9 山田 C A 上記の様な列(データ)が数百件あります。 (前提条件) ※text1の@前の文字が変化している所がありますが、  →例)佐藤のBという値がAになっているなど。  名前の重複はなく、変化もしていませんので、  名前を参照して処理をするイメージを持っております。  但し、「text1」にはあって「text2」には存在しないデータがあり、  →例)名前だけでなく、数字や英字など1行そのまま無い場合があります。  逆に「text2」にはあって「text1」には存在しないデータもあります。  最終的に「text2」を結果として出力したいので、「text2」に存在しないデータは、  無視していただいて結構です。 ※「text1」と「text2」の件数は異なります。 ※先頭の数字、英字、@後のデータ(高校など)は重複している場合があります。 (完成イメージ) 「text1」と「text2」の名前を参照元として、 「text2」の最後へ「text1」の@含めた文字列を付加して、  web表示orダウンロード出来る様にしたいです。 ■text2 2 佐藤 A A@高校→大学 6 田中 B C@大学→社会人 9 鈴木 D E@会社 9 山田 C A 最後の山田はそのまま表記したいです。 以上、宜しくお願い申し上げます。

関連するQ&A