• ベストアンサー

文字列に文字を追加したい

phpで特定の場所に特定の文字列を追加したいのですが、どのような方法がありますでしょうか。 具体的には下記のような文字列に /price/ という文字を追加したいと思っています。 /red/2001 /blue/9033 /white/12062 ↓ /red/price/2001 /blue/price/9033 /white/price/12062 /price/を挿入する条件は ・数字の文字列の前に/price/を挿入したい ・数字の桁数は増減する ・/red/や/blue/の箇所は色々な文字列がはいる になります。 どうかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

既にある回答で十分ですけど、(個人的に)最適な書き方をしてみます。 echo preg_replace('@/(\\d+)@', '/price/$1', $string);

gogo8999
質問者

補足

どうもありがとうございました。 希望通りにできました。 しかしながら、d+とか$1の意味が全く分かりませんでした。 教えて頂いたリンク先を見ると「正規表現」だと思うのですが、これを理解できるサイトや参考書などご存知でしたら教えて頂けると幸いです。 よろしくお願い致します。

その他の回答 (2)

noname#244856
noname#244856
回答No.3

【サルにもわかる正規表現】 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

gogo8999
質問者

お礼

とても参考になりました。 色々な書き方があるものなのですね。

回答No.1

preg_replaceとか? http://www.php.net/manual/ja/function.preg-replace.php $string = '/red/2001' echo preg_replace('/\/(\d+)/', '/price/$1', $string);

gogo8999
質問者

補足

どうもありがとうございました。 希望通りにできました。 しかしながら、d+とか$1の意味が全く分かりませんでした。 教えて頂いたリンク先を見ると「正規表現」だと思うのですが、これを理解できるサイトや参考書などご存知でしたら教えて頂けると幸いです。 よろしくお願い致します。

関連するQ&A