🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

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

Q&A

3回答

1185閲覧

変数から文字列を抜き出し

Res

総合スコア184

PHP

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

0グッド

0クリップ

投稿2019/09/29 09:05

編集2019/09/29 10:09

やりたいこと

まず、次のような文字列があります。

php

1$text = "tag1:aaa,tag2:bbb,tag3:ddd,";

この中からtag1やtag2などの内容(aaa)を抜き出して変数に格納したいのですが、私はあまり変数の操作について詳しくないので教えていただければ助かります。
よろしくお願いいたします。

追記

[php]文章内の指定文字から指定文字までの文字列を抽出する方法
このサイトが思うようなものと近かったのですが、この場合複数「」があった場合所得できないので他の方法はないでしょうか。

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

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

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

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

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

miyabi_takatsuk

2019/09/29 09:26

ご自身で、どれくらい調べたも記載しないと丸投げになってしまいます。 また参考にしたページがあるなら、そのURLなども記載しましょう。 (質問本文に。質問本文は編集できます)
kei344

2019/09/29 12:32

まだ質問が「受付中」になっていますが、「ベストアンサー」を選び「解決済」にされてはいかがでしょうか。 【質問するときのヒント|teratail(テラテイル)】 https://teratail.com/help/question-tips#questionTips4-1 > 4-1. ベストアンサーを選びましょう
退会済みユーザー

退会済みユーザー

2019/09/29 12:42

>あえてベストアンサーは選びません って、このサイトの使い方としてどうなんでしょう。 解決済にしないで放置するということは、回答者さんの善意を踏みにじることになるんですが、それ分かってるんでしょうかね。
Res

2019/09/29 12:42

回答くださった方すべての意見に合うのであえてベストアンサーを選んでいないのですが... ベストアンサーが「すべて」にできたらいいのですが・・・
退会済みユーザー

退会済みユーザー

2019/09/29 12:54

ベストアンサーをつけないと、まだ回答を受け付けている状態であるということで、回答を寝るために回答陣が時間を割くことになってしまいます。お互いのムダを省くためにも、一番フィットした回答をベストアンサーとして、選んだ理由をコメントで補えば気持ちは伝わると思いますよ。
guest

回答3

0

php は文字列を操作する関数が多数あります。
String 関数

こういった関数群の挙動をある程度覚え、文字列をどのように操作すると意図したモノが抽出できるか考えます。
そこまでできたら具体的なコードが書けるようになります。

今は抽出のルールが決められない段階なので、体系的な学習を先にしたほうが良いです。

質問を極端なルールで解くと以下のコードでも抽出できますが、多分無意味です。

php

1<?php 2$text = "tag1:aaa,tag2:bbb,tag3:ddd,"; 3$text = str_replace([':',','], ' ', $text); 4list($tmp[0], $str[0], $tmp[1], $str[1], $tmp[2], $str[2]) = sscanf($text, '%s %s %s %s %s %s'); 5var_export($str);

投稿2019/09/29 10:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Res

2019/09/29 11:15

ご回答ありがとうございます! 今回ほかの方も回答くださったのであえてベストアンサーは選びません。 質問に頼らぬようしっかり学習します。
guest

0

ご質問の中にあるように、デリミタの位置を探して切り出すのも
ひとつの方法ではありますが、この場合は他の方も書かれている
ように、デリミタで分割していく方がすなおな気がしますね。

php

1$text = "tag1:aaa,tag2:bbb,tag3:ddd,"; 2$ar = array(); 3foreach (explode(',', $text) as $item) { 4 if (empty($item)) continue; 5 list($k, $v) = explode(':', $item); 6 $ar[$k] = $v; 7} 8extract($ar);

投稿2019/09/29 10:59

takasima20

総合スコア7460

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

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

Res

2019/09/29 11:12

ありがとうございます! 結果はしっかりと取れました! array(3) {["tag1"]=>string(3) "aaa"["tag2"]=>string(3) "bbb" ["tag3"]=> string(3) "ddd"} ですがほかの方もいい回答でしたのであえてベストアンサーは選びません。 しっかり文字列操作関連を学んでおきます。
guest

0

  1. split() して array_search() する
  2. 両側を "{}" で囲って、 json_parse() する

とか、なんとでもやりようがあると思います。

...

※ テキトウ書きすぎてしまったので、追記です。

  1. の話は split() は廃止される関数なので、 explode() を使用。具体的には他の方の回答の通り。
  2. の話は、"{}" をつけただけではダメで、以下のような入力なら、 json_decode() が使える。

php

1$text = '{"tag1":"aaa","tag2":"bbb","tag3":"ddd"}'; 2$a = json_decode($text); 3echo($a->tag1 . "\n"); // "aaa"

投稿2019/09/29 09:55

編集2019/09/29 12:29
tanishi_a

総合スコア484

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

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

Res

2019/09/29 11:16

回答してくださりありがとうございます。 今回たくさんの回答がありましたのでベストアンサーは選びませんが、回答には感謝しています。 まだ学習途中なので助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問