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

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

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

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

Q&A

解決済

1回答

3387閲覧

指定した文字列の色を変える方法

m-i

総合スコア13

PHP

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

0グッド

0クリップ

投稿2018/08/31 05:23

指定した複数の文字列の色を変えたいです。
例えば、「a、またはbなどのc。」という文章を書いたとき
a、b、cという文字色を同じ色に変更したいです。
文字列を文字列に置換する方法は下記のようにわかったのですが・・・
色を変えるにはどうしたらいいのでしょうか?

<?php $str='a、またはbなどのc。'; $key=array('/a/','/b/','/c/'); $replace='A'; $str_grept=preg_replace($key, $replace, $str); echo $str_grept; ?>

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

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

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

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

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

m.ts10806

2018/08/31 05:29

対象文章の中に複数回出てくる場合は続けてくる場合はどうするのでしょうか?
m-i

2018/08/31 05:35

そこまでよく考えていませんでした。とにかく指定した複数の文字の色を変えたい、ということなんです。ごめんなさい、始めたばかりなもので・・・。よろしくお願いします。
m.ts10806

2018/08/31 05:37

なるほど。機能の勉強(もしくは宿題とか課題とか)ですかね。了解です。
guest

回答1

0

ベストアンサー

以下でそれっぽいことは実現できます。

php

1<style> 2.hoge{ 3 color:red; 4} 5</style> 6<?php 7$str='a、またはbなどのc。'; 8$key=array('/a/','/b/','/c/'); 9$str_grept=preg_replace($key, '<SPAN CLASS="hoge">$0</SPAN>', $str); 10echo $str_grept;

出力結果

html

1<SPAN CLASS="hoge">a</SPAN>、または<SPAN CLASS="hoge">b</SPAN>などの<SPAN CLASS="hoge">c</SPAN>

$0とすることでマッチした文字が入ってきます。
(0だけじゃダメなケースもあるのでそこは置換対象や要件次第でかえる必要があります)

注意点

あくまで「それっぽい」としたのはタグと属性を大文字にしているところにあります。
第1引数を配列で突っ込んだとしても結局は1つ目から1つずつ置換しているに過ぎないので、htmlタグと属性を小文字にするとclassのcが置換対象となってしまいます。
今回の手法以外で文字色を変えようとしても結局はどこかで引っかかる可能性があり、今回のような単純な置換のためだけのことになるので、あまり汎用性が高いやり方ではないかもしれません。

もしかしたらもっと汎用性が高い回答が来るかもしれないので
私の回答は1つの参考としてもう少し待ってみてもいいかもしれません。

投稿2018/08/31 05:55

m.ts10806

総合スコア80850

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

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

m-i

2018/08/31 06:53

やりたかったのはまさにこれです!本当にありがとう。助かりました。
m.ts10806

2018/08/31 06:57

注意点はよく読んでおいてください。 元の文章が変わればおそらく対応しきれません。 =とか<とか>とか置換したくなった場合にはこれではできません。
m-i

2018/08/31 07:06

はい。丁寧な説明をありがとうございます。今はまだ「そうなんだ・・・」くらいしか頭が回りませんが・・・勉強させていただきます。この質問に時間を割いていただき感謝します。
m.ts10806

2018/08/31 07:11

ひとまず、htmlを含ませることになる場合は要注意ということを覚えておいてください。 もちろん正規表現は様々な指定ができるのでもっと除外条件とか駆使すれば簡単にできる可能性もなくはないですが、それなら置換したい文字がユーザーの入力を受け付ける場合、使える文字を制限するとかteratailみたいにマークダウン使うとか、別方向からのアプローチも必要になってくる場面もあります。 そこで「要件次第」と書きました。 ここで解決とするかどうかは質問者さんで決めてください。 別回答を待つか、一度締めるか。
m-i

2018/08/31 07:32

なるほど・・・。詳しく丁寧な説明、感謝します。とりあえずこれで締めようと思います。本当に助かりました。どうもありがとうございました!・・・またよろしくお願いします!
m.ts10806

2018/08/31 07:34

解決できたようで何よりです。 いろいろご自身でも試してみてくださいね。 特に最初はトライ&エラーでなんぼです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問