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

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

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

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

Q&A

解決済

1回答

2752閲覧

PHPのpreg_matchを使った正規表現で特定の文字以降を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2018/02/02 16:10

編集2018/02/02 17:10

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)"【実験内容】.....【研究者】...【評価】...."

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/02/02 16:23

最終的に何をしたいのかが不明で回答のしようがありません。
退会済みユーザー

退会済みユーザー

2018/02/02 16:30

質問内容を一部修正しました。preg_matchを使って【実験内容】以降を取得したいです。
退会済みユーザー

退会済みユーザー

2018/02/02 16:31

検索対象の文字列を見て判断しなきゃいけないのになんで書かないのです?
退会済みユーザー

退会済みユーザー

2018/02/02 16:46

一部書けない内容があるためです。改めて追記します。
退会済みユーザー

退会済みユーザー

2018/02/02 17:08

望む結果がどうなって欲しいのかを具体的に書いてください。
退会済みユーザー

退会済みユーザー

2018/02/02 17:09

結果③を目指しています。
guest

回答1

0

ベストアンサー

php

1<?php 2 3$body_text = "タイトル...【実験内容】.....【研究者】...【評価】...."; 4 5preg_match("/(【.+)/", $body_text, $result); 6var_dump($result); 7

投稿2018/02/02 17:15

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問