- ベストアンサー
文字列に文字を追加したい
phpで特定の場所に特定の文字列を追加したいのですが、どのような方法がありますでしょうか。 具体的には下記のような文字列に /price/ という文字を追加したいと思っています。 /red/2001 /blue/9033 /white/12062 ↓ /red/price/2001 /blue/price/9033 /white/price/12062 /price/を挿入する条件は ・数字の文字列の前に/price/を挿入したい ・数字の桁数は増減する ・/red/や/blue/の箇所は色々な文字列がはいる になります。 どうかよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
既にある回答で十分ですけど、(個人的に)最適な書き方をしてみます。 echo preg_replace('@/(\\d+)@', '/price/$1', $string);
その他の回答 (2)
【サルにもわかる正規表現】 http://www.mnet.ne.jp/~nakama/ 【公式マニュアル】 PCRE目次 http://www.php.net/manual/ja/book.pcre.php パターン構文 http://www.php.net/manual/ja/reference.pcre.pattern.syntax.php パターン修飾子 http://www.php.net/manual/ja/reference.pcre.pattern.modifiers.php ※「$1」に関してはpreg_replaceのページに載ってます。 ※よく使う関数として「preg_match」「preg_match_all」「preg_replace」「preg_replace_callback」が挙げられます。 【注意点】 「PHPとしてのエスケープ」と「PCREとしてのエスケープ」の2つがあることに留意してください。 正規表現で「\」という文字自体にマッチさせたければ、コード上は「\\\\」と書かなければなりません。 コード $pattern = '/\\\\/'; ↓ PHPがPCREエンジンに渡す内容 パターン: \\ ↓ PCREエンジンのパターン解釈後 マッチする文字列: \ 私が敢えて「\d」でなく「\\d」と書いたのはこの理由からです。 「d」はPHPコード上、エスケープが必要な文字ではないので「\d」と書いても正しく動作するのですが、こういった仕様もPHP特有のようです。 他言語使用者がこの仕様を知ったら『「\\d」でないと気持ち悪い』っていう人が多いかもしれません。 たとえばC言語の場合は無視されてしまいます。 http://ideone.com/65136A
お礼
とても参考になりました。 色々な書き方があるものなのですね。
- hanabutako
- ベストアンサー率54% (492/895)
preg_replaceとか? http://www.php.net/manual/ja/function.preg-replace.php $string = '/red/2001' echo preg_replace('/\/(\d+)/', '/price/$1', $string);
補足
どうもありがとうございました。 希望通りにできました。 しかしながら、d+とか$1の意味が全く分かりませんでした。 教えて頂いたリンク先を見ると「正規表現」だと思うのですが、これを理解できるサイトや参考書などご存知でしたら教えて頂けると幸いです。 よろしくお願い致します。
補足
どうもありがとうございました。 希望通りにできました。 しかしながら、d+とか$1の意味が全く分かりませんでした。 教えて頂いたリンク先を見ると「正規表現」だと思うのですが、これを理解できるサイトや参考書などご存知でしたら教えて頂けると幸いです。 よろしくお願い致します。