下記の通り、$get_contents
の変数をpreg_matchに代入してもなにも結果が得られませんでした。オンラインの正規表現チェッカー等でえられているのに不思議に思い試行錯誤していたのですが、
php
1var_dump($get_contents); 2//string(1499) "全銀協日本円TIBOR ( JBA Japanese Yen TIBOR ) ※本情報の再配信を希望する場合は、当法人までお問い合わせください。 Please contact us(JBATA), when you want to re-distribute this information. 2021/08/31更新(updated) (単位 年% percent per annum) 1WEEK 1MONTH 2MONTH 3MONTH 4MONTH 5MONTH 6MONTH 7MONTH 8MONTH 9MONTH 10MONTH 11MONTH 12MONTH 2021/08/31 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/30 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/27 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/26 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/25 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/24 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/23 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/20 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/19 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/18 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/17 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/16 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/13 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/12 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/11 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/10 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/06 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/05 -0.01364 0.08545 0.05727 0.11636 0.14636 2021/08/04 -0.01364 0.08545 0.05727 0.11636 0.14636 2021/08/03 -0.01364 0.08545 0.05727 0.11636 0.14636 2021/08/02 -0.00636 0.08545 0.05727 0.11636 0.14636" 3 4preg_match('@2021/08/31 (.+?) 2.../@',$get_contents,$res); 5var_dump($res);//array(0) { }
改めて、以下のように直接変数を文字列として代入すると正しく結果が出力されます。
php
1preg_match('@2021/08/31 (.+?) 2.../@s', 'string(1499) "全銀協日本円TIBOR ( JBA Japanese Yen TIBOR ) ※本情報の再配信を希望する場合は、当法人までお問い合わせください。 Please contact us(JBATA), when you want to re-distribute this information. 2021/08/31更新(updated) (単位 年% percent per annum) 1WEEK 1MONTH 2MONTH 3MONTH 4MONTH 5MONTH 6MONTH 7MONTH 8MONTH 9MONTH 10MONTH 11MONTH 12MONTH 2021/08/31 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/30 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/27 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/26 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/25 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/24 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/23 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/20 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/19 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/18 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/17 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/16 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/13 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/12 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/11 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/10 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/06 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/08/05 -0.01364 0.08545 0.05727 0.11636 0.14636 2021/08/04 -0.01364 0.08545 0.05727 0.11636 0.14636 2021/08/03 -0.01364 0.08545 0.05727 0.11636 0.14636 2021/08/02 -0.00636 0.08545 0.05727 0.11636 0.14636"', $res); 2var_dump($res) 3//array(2) { [0]=> string(57) "2021/08/31 -0.00364 0.08545 0.05727 0.11636 0.14636 2021/" [1]=> string(40) "-0.00364 0.08545 0.05727 0.11636 0.14636" }
改行等のパターン修飾子も付してみたのですが、どうしても変数代入から取得できず、なぜこのような現象がおきるのかわからず、ご助言と解決方法をご教示いただきたく、お願い申し上げます。
【追記】完全版のコード
利用ライブラリ(他参考にしたもの)
php ver:7.4.1
php
1// ini_set('display_errors', "On"); 2use Spatie\PdfToText\Pdf; 3require_once __DIR__ . '/vendor/autoload.php'; 4 5$parser = new \Smalot\PdfParser\Parser(); 6$pdf = $parser->parseFile('https://www.jbatibor.or.jp/rate/pdf/JAPANESEYENTIBOR210831.pdf'); 7$get_contents = $pdf->getText(); 8var_dump($get_contents); //正しく出力 9preg_match("@2021/08/31 (.+?) 2.../@",$get_contents,$res); 10var_dump($res); //array(0){}
回答2件
あなたの回答
tips
プレビュー