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

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

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

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

Q&A

解決済

4回答

6426閲覧

preg_replaceでシングルクォートを含む文字列の置換

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2017/08/31 01:48

preg_replaceでシングルクォートを含む文字列の置換について質問させてください。

'abcd'や'1234'のなどの色んなパターンのシングルクォートを含む文字を置換したいと思い試すのですが全然うまくいきません。
色んなサイトを漁ったのですが正規表現は頭が痛いです・・・(;^ω^)
こんな風にもしてみましたがさっぱりで・・・

$value = preg_replace( "/'(.*?)'/", "<span class=\"aaa\">'$1'</span>" , $value );

どこが間違っているのでしょうか?
マニュアルは再三目を通したのですが分かりませんでした。
よろしくお願いします。

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

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

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

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

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

guest

回答4

0

引用符

こちらを参考に^^

追記
引用符別のサンプルを作成してみました。
ちなみに、今回使用する $1 は変数ではないので、文字列に直接埋め込むことが必要です。

php

1<?php 2$value = '\'hoge\''; 3echo $value.PHP_EOL; 4$res[1] = preg_replace( '/\'(.*?)\'/', '<span class="aaa">\'$1\'</span>' , $value ); 5$res[2] = preg_replace( "/'(.*?)'/", "<span class=\"aaa\">'$1'</span>" , $value ); 6$res[3] = preg_replace( '/\'(.*?)\'/', '<span class="aaa">$1</span>' , $value ); 7$res[4] = preg_replace( "/'(.*?)'/", "<span class=\"aaa\">$1</span>" , $value ); 8$res[5] = preg_replace( '/\'(.*?)\'/', '<span class="aaa">\\1</span>' , $value ); 9$res[6] = preg_replace( "/'(.*?)'/", "<span class=\"aaa\">\\1</span>" , $value ); 10var_dump($res); 11 12/// 13 14'hoge' 15array(7) { 16 [1]=> 17 string(31) "<span class="aaa">'hoge'</span>" 18 [2]=> 19 string(31) "<span class="aaa">'hoge'</span>" 20 [3]=> 21 string(29) "<span class="aaa">hoge</span>" 22 [4]=> 23 string(29) "<span class="aaa">hoge</span>" 24 [5]=> 25 string(29) "<span class="aaa">hoge</span>" 26 [6]=> 27 string(29) "<span class="aaa">hoge</span>" 28 [7]=> 29 string(29) "<span class="aaa">hoge</span>" 30}

投稿2017/08/31 02:00

編集2017/08/31 03:04
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/08/31 06:35

ご回答ありがとうございます。 考えていただいてすみません。 どうやら私の勘違いのようで置換自体は問題なくできていました。
guest

0

ベストアンサー

提示のコードで問題なく置換されているようですが、「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」を、出ているエラーなどと併せて、具体的に記述されたほうが回答を得られやすいと思います。

PHP

1$value = "'abcd'や'1234'のなどの色んなパターン"; 2echo preg_replace( "/'(.*?)'/", "<span class=\"aaa\">'$1'</span>" , $value ); 3// <span class="aaa">'abcd'</span>や<span class="aaa">'1234'</span>のなどの色んなパターン 4```**動くサンプル:**[https://3v4l.org/qTZDS](https://3v4l.org/qTZDS)

投稿2017/08/31 02:50

kei344

総合スコア69407

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

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

退会済みユーザー

退会済みユーザー

2017/08/31 06:33

ご回答ありがとうございます。 また確認までしていただいたようですみません。 どうやら私の勘違いのようで置換自体は問題なくできていました。
guest

0

preg_replace
こちらを参考に

第1引数の「"/'(.*?)'/"」の正規表現は問題ないと思います。
最初にシングルクォートで囲まれた文字列が検索されると思います。

なので第3引数の $value の文字列の中にシングルクォートで囲まれた文字列があれば
第2引数の文字列が置換されると思います。

投稿2017/08/31 02:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/08/31 06:36

ご回答ありがとうございます。 アドバイスありがとうございます。 どうやら私の勘違いのようで置換自体は問題なくできていました。
guest

0

PHP

1<?php 2$value = "'abcd'"; 3$value = preg_replace("/'(.*?)'/", "<span class=\"aaa\">'$1'</span>" , $value);

の結果として

<span class="aaa">'abcd'</span>

ではなく

<span class="aaa">abcd</span>

にしたいのでしたら、別解でありますように引用符を参考にしてください。

投稿2017/08/31 02:18

rururu3

総合スコア5545

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

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

退会済みユーザー

退会済みユーザー

2017/08/31 06:37

ご回答ありがとうございます。 シングルクォートを残したままの置換を考えておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問