preg_replaceでシングルクォートを含む文字列の置換について質問させてください。
'abcd'や'1234'のなどの色んなパターンのシングルクォートを含む文字を置換したいと思い試すのですが全然うまくいきません。
色んなサイトを漁ったのですが正規表現は頭が痛いです・・・(;^ω^)
こんな風にもしてみましたがさっぱりで・・・
$value = preg_replace( "/'(.*?)'/", "<span class=\"aaa\">'$1'</span>" , $value );
どこが間違っているのでしょうか?
マニュアルは再三目を通したのですが分かりませんでした。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
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
総合スコア69407
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
preg_replace
こちらを参考に
第1引数の「"/'(.*?)'/"」の正規表現は問題ないと思います。
最初にシングルクォートで囲まれた文字列が検索されると思います。
なので第3引数の $value の文字列の中にシングルクォートで囲まれた文字列があれば
第2引数の文字列が置換されると思います。
投稿2017/08/31 02:10
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/31 06:36
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
総合スコア5545
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/31 06:37
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/31 06:35