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

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

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

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

Q&A

解決済

3回答

1934閲覧

[php]文字列を配列に格納したい

kalon

総合スコア198

PHP

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

0グッド

0クリップ

投稿2016/09/13 18:58

編集2016/09/14 03:48

皆様いつもお世話になっております。

以下の文字列を<div><div>を排除して一行ずつ配列に格納したいのですが、どのようにすれば実現可能でしょうか?
splitやexplodeで試してみましたが、一行ずつ配列することができませんでした。

自分なりにやってみましたが

$messages = explode("^<.*div *.>", $messages[0]);

結果は失敗でした。

<div class="text">人間はひとくきの葦にすぎない。自然の中で最も弱いものである。だが、それは考える葦である。 <div class="text">その日その日が一年中の最善の日である。</div> <div class="text">チャンスは貯蓄できない。</div> <div class="text">希望さえあればどんな所にでも たどりつけると決心している。</div> <div class="text">死者にたいする最高の手向けは、悲しみではなく感謝だ。</div> <div class="text">人生は道路のようなものだ。 一番の近道は、たいてい一番悪い道だ。</div> <div class="text">世の中は、君の理解する以上に栄光に満ちている。</div> <div class="text">人付き合いがうまいというのは、人を許せるということだ。</div> <div class="text">生きるとは呼吸することではない。行動することだ。</div> <div class="text">人生は学校である。 そこでは幸福より不幸の方が良い教師である。</div> <div class="text">若い女は美しい。しかし、老いた女はもっと美しい。</div> <div class="text">今日という日は、残りの人生の最初の一日。</div> <div class="text">卵を割らなければ、オムレツは作れない。</div> <div class="text">至上の処世術は、 妥協することなく適応することである。</div> <div class="text">人間、志を立てるのに遅すぎるということはない。</div> <div class="text">(中略)・・・ 世の中を見渡してみると本当に『強い』人っていうのは悪い事はしない事に気づく。<br> 「悪い事をする敵」というものは「心に弱さ」を持った人であり、 真に怖いのは弱さを攻撃に変えた者なのだ。</div> <div class="text">確かに世の中は不公平だ。美人や美青年がいる一方で、あなたがいる。 <br> だからなんだ!? それを嘆いてどうするの?</div> <div class="text">太陽が輝くかぎり、希望もまた輝く。</div> <div class="text">行動は必ずしも幸福をもたらさないかも知れないが、 行動のない所に、幸福は、生まれない。</div> <div class="text">成し遂げんとした志をただ一回の敗北によって捨ててはいけない。</div>

皆様のお知恵をお貸しください。よろしくお願いします。

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

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

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

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

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

kei344

2016/09/13 19:09

「splitやexplode」について、どのようなコードを書き、どう出来なかったかを追記ください。
kalon

2016/09/13 19:51

上記文字列が$messages[0]に格納されているので次の方法で試してみました。 $messages = explode("^<.*div *.>", $messages[0]); 結果は失敗でした。
退会済みユーザー

退会済みユーザー

2016/09/14 00:53

質問に <code> 形式で追加してくださいってことですよ
kalon

2016/09/14 03:49

こちらは要素を配列に格納する方法を質問していて、ご指摘のリンク先の質問は要素内に含まれる別の要素(英語の文章)を除去する質問ですので重複では亡いはずです。
退会済みユーザー

退会済みユーザー

2016/09/14 03:54 編集

要約すると両方共「特定のタグの内部テキストを取得する正規表現」ですが こっち:preg_match、あっち:preg_replace
guest

回答3

0

ベストアンサー

以下のようにpreg_match_allを使うと<div></div>の間をうまく抽出できると思います。

php

1<?php 2$str = 3'<div class="text">人間はひとくきの葦にすぎない。自然の中で最も弱いものである。だが、それは考える葦である。 4<div class="text">その日その日が一年中の最善の日である。</div> 5<div class="text">チャンスは貯蓄できない。</div> 6<div class="text">希望さえあればどんな所にでも たどりつけると決心している。</div> 7<div class="text">死者にたいする最高の手向けは、悲しみではなく感謝だ。</div> 8<div class="text">人生は道路のようなものだ。 一番の近道は、たいてい一番悪い道だ。</div> 9<div class="text">世の中は、君の理解する以上に栄光に満ちている。</div> 10<div class="text">人付き合いがうまいというのは、人を許せるということだ。</div> 11<div class="text">生きるとは呼吸することではない。行動することだ。</div> 12<div class="text">人生は学校である。 そこでは幸福より不幸の方が良い教師である。</div> 13<div class="text">若い女は美しい。しかし、老いた女はもっと美しい。</div> 14<div class="text">今日という日は、残りの人生の最初の一日。</div> 15<div class="text">卵を割らなければ、オムレツは作れない。</div> 16<div class="text">至上の処世術は、 妥協することなく適応することである。</div> 17<div class="text">人間、志を立てるのに遅すぎるということはない。</div> 18<div class="text">(中略)・・・ 世の中を見渡してみると本当に『強い』人っていうのは悪い事はしない事に気づく。<br> 19「悪い事をする敵」というものは「心に弱さ」を持った人であり、 真に怖いのは弱さを攻撃に変えた者なのだ。</div> 20<div class="text">確かに世の中は不公平だ。美人や美青年がいる一方で、あなたがいる。 <br> 21だからなんだ!? それを嘆いてどうするの?</div> 22<div class="text">太陽が輝くかぎり、希望もまた輝く。</div> 23<div class="text">行動は必ずしも幸福をもたらさないかも知れないが、 行動のない所に、幸福は、生まれない。</div> 24<div class="text">成し遂げんとした志をただ一回の敗北によって捨ててはいけない。</div>'; 25 26preg_match_all('|<div class="text">(.*)(</div>)|', $str, $matches); 27var_dump($matches[1]);

余談ですが、もしより複雑なHTMLを解析すること(スクレイピング)を目的としているなら、
自前の文字列解析ではなく、Domパーサとか使ったほうがいいと思いました。
http://php-archive.net/php/dom-scraping/

投稿2016/09/13 20:36

編集2016/09/13 21:07
popobot

総合スコア6586

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

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

0

explode の第一引数は文字列を分割するための「文字列」です。正規表現も単なる文字列として扱われます。

【PHP: explode - Manual】
http://php.net/manual/ja/function.explode.php


単純に改行コードで分割するなら。

【phpで改行コードでexplodeする | ExiZ.org】
http://exiz.org/develop/php/2013022012387

PHP

1$data = explode("\n", $string); 2 3$data = explode(PHP_EOL, $string);

空行を含まないようにするなら。

【複数行にわたるデータを持っている変数を行ごとに分けて配列に格納する方法複... - Yahoo!知恵袋】
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13140724268

PHP

1$array = preg_split('/[\r\n]/', $data, -1, PREG_SPLIT_NO_EMPTY);

<div><div>を排除して

分割前の文字列に strip_tags をかければよいです。

【PHP: strip_tags - Manual】
http://php.net/manual/ja/function.strip-tags.php

投稿2016/09/13 20:07

kei344

総合スコア69364

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

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

0

#配列名 = array('人間はひとくきの葦にすぎない。自然の中で最も弱いものである。だが、それは考える葦である。','その日その日が一年中の最善の日である。',・・・・

こんな感じでやったらいいと思います。

投稿2016/09/13 22:42

編集2016/09/13 22:44
yoshipu

総合スコア115

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問