質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.43%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

233閲覧

ディレクトリ配下のファイル内の韓国語(ハングル文字)の有無を判定したい

vn2731vn

総合スコア15

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2024/05/29 12:58

実現したいこと

ローカルにあるディレクトリ配下のファイル群の中に韓国語(ハングル文字)が含まれているかどうか、含まれているとしたら何の文字が含まれているかを出力したいです。

発生している問題・分からないこと

ネットで検索したところ、PHPのpreg_match関数という方法を見つけました。
ただ、私が見つけたソースコードは特定のテキスト(文言)の中に該当する文字があるかどうかを判定するもので、ディレクトリ内のファイル全体をGrep検索するものではありませんでした。
テキストではなくディレクトリのPathごと指定する方法はあるのでしょうか?
また、正しいPHPのコードが完成したとして、ディレクトリ上でどのように実行するのでしょうか?

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果
<?php $text = "Hello こんにちは 안녕하세요"; $pattern = "/[가-힣]/u"; if (preg_match($pattern, $text, $matches)) { echo "マッチした文字列:", $matches[0], "\n"; echo "キャプチャグループの内容:", $matches[1]; } ?>

補足

preg_match関数の使い方、韓国語を判定する正規表現の書き方、また、他に韓国語を確認するやり方がありましたら、ご教示をお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Paalon

2024/05/29 13:13 編集

PHP は全く分からないのですが、一般的には(PHP に限らず)、 Unicode のハングル文字のコードポイントに該当するかどうかをディレクトリ内のすべてのテキストファイルについて順繰りに実行していけば良いと思います。正規表現ではやらないほうが良いと思います。
vn2731vn

2024/05/29 13:15

>Unicode のハングル文字のコードポイントに該当するかどうかをディレクトリ内のすべてのテキストファイルについて順繰りに実行していけば良いと思います。 →すみません、具体的にどのような手順で実行すればいいのでしょうか?検索対象のファイル数が多いのですが、問題ないでしょうか?
Paalon

2024/05/29 13:27

他のプログラミング言語でのやり方は分かりますが、PHP はわからないです。 やることはまず、「あいうえお」という文字列からコードポイント毎に切り出して、 12354 12356 12358 12360 12362 という10進数表現、または 3042 3044 3046 3048 304a という16進数表現を得ることです。 次にハングル文字のユニコードコードポイントの範囲を調べることです。 次に文字がハングル文字かどうか判定する関数を書くことです。 次にテキストファイルを読み込む関数を書くことです。 次にディレクトリ内のファイル名を調べる関数を書くことです。 最後にディレクトリ内のファイルをすべて走査して、テキストファイルの文字コードポイントをすべて走査して、ハングル文字かどうか判定すれば良いです。 検索対象のファイル数が多くても時間はかかるかもしれませんが、普通は大丈夫だと思います。
melian

2024/05/29 13:46 編集

> 韓国語を判定する正規表現の書き方 Unicode プロパティを使う方法もあります。 <?php $text = "Hello こんにちは 안녕하세요"; $pattern = "/\p{Script=Hangul}/u"; if (preg_match_all($pattern, $text, $matches)) { print_r($matches[0]); }
winterboum

2024/05/31 04:19

ハングルがあるかどうかについてのやり方についてはもう問題なさそうなので >テキストではなくディレクトリのPathごと指定する方法はあるのでしょうか? >ディレクトリ上でどのように実行するのでしょうか? について。ただ PHPは読めるけど書けないので、概念で 対象dirを引数にして起動(もしくは起動する時のカレントdirを対象にする) 対象dirにあるfile一覧を取得 loop-1:file一覧から fileを一つずつ選び   関数 extract_hangul(file) を実行して 含んでいたら出力、含んで居なかったらパス 関数 extract_hangul(file) strings='' loop-2:選んだfileから1行ずつ読み込み   Hanguleが有ったら抜き出して strings に追加 stringsをreturn     
guest

回答1

0

自己解決

コメントありがとうございます。
結局最初にコメントいただいた方の方針に従って、Pythonで関数を書きました。
(PHPとタグ付けておきながらすみません)
他の方もコメントありがとうございました。

投稿2024/06/09 17:01

vn2731vn

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.43%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問