preg_matchを使った正規表現での取得が上手くいかず、$resultの中身が下記【結果②】のようになってしまいます。
【実験内容】以降の文字列を取得した【結果③】が目標となります。
詳しい方いましたらお願いします。
下記のコードの中身をそれぞれ確認した結果が以下になります。
PHP
1 2<? 3 4// 取得した文字列 5$body_text="タイトル...【実験内容】.....【研究者】...【評価】...."; 6 7//file_gets_contensで各ページのURL及び内容は取得できています。 8//その各ページの内容に【実験内容】という文字が含まれています。 9//各ページの【実験内容】以降を取得したいです。 10//下記のコード②のようにstrposだと上手【実験内容】以降が取得できます。 11//誤字脱字お許しください。 12//【結果③】を目指しています。 13 14 15// 【実験内容】含む以降preg_matchを使って取得してみる 16preg_match( 17'/【実験内容】.+/u', 18$body_text, 19$result 20); 21 22//結果① 23//var_dump($body_text); 24//結果② 25var_dump($result); 26 27?>
$body_text→var_dump
【結果①】
string(3113)"タイトル...【実験内容】.....【研究者】...【評価】...."
string(4569)"タイトル...【実験内容】.....【研究者】...【評価】...."
string(7031)"タイトル...【実験内容】.....【研究者】...【評価】...."
$result→var_dump
【結果②】
array(0) { }
array(0) { }
array(0) { }
※$body_textにstring(3113)"タイトル...【実験内容】.....【研究者】...【評価】...."のみを入れると上手くいきます。その場合var_dump($result)するとstring(3100)"【実験内容】.....【研究者】...【評価】....";になります。
PHP
1//上手くいったパターン 2//コード② 3 4//strposを使う方法 5//【の位置を見つける 6$sample=strpos($body_text, "【"); 7//【以降を取得 8$result=substr($body_text, $sample); 9 10var_dump($result); 11?>
【結果③】
string(3100)"【実験内容】.....【研究者】...【評価】...."
string(4502)"【実験内容】.....【研究者】...【評価】...."
string(7003)"【実験内容】.....【研究者】...【評価】...."
回答1件
あなたの回答
tips
プレビュー