重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

phpで特定の場所に特定の文字列を追加したいのですが、どのような方法がありますでしょうか。

具体的には下記のような文字列に /price/ という文字を追加したいと思っています。

/red/2001
/blue/9033
/white/12062



/red/price/2001
/blue/price/9033
/white/price/12062

/price/を挿入する条件は

・数字の文字列の前に/price/を挿入したい
・数字の桁数は増減する
・/red/や/blue/の箇所は色々な文字列がはいる

になります。

どうかよろしくお願いいたします。

A 回答 (3件)

既にある回答で十分ですけど、(個人的に)最適な書き方をしてみます。



echo preg_replace('@/(\\d+)@', '/price/$1', $string);

この回答への補足

どうもありがとうございました。
希望通りにできました。

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

補足日時:2013/05/05 14:36
    • good
    • 0

【サルにもわかる正規表現】



http://www.mnet.ne.jp/~nakama/


【公式マニュアル】

PCRE目次
http://www.php.net/manual/ja/book.pcre.php

パターン構文
http://www.php.net/manual/ja/reference.pcre.patt …
パターン修飾子
http://www.php.net/manual/ja/reference.pcre.patt …

※「$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
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/05 19:27

preg_replaceとか?


http://www.php.net/manual/ja/function.preg-repla …

$string = '/red/2001'
echo preg_replace('/\/(\d+)/', '/price/$1', $string);

この回答への補足

どうもありがとうございました。
希望通りにできました。

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

補足日時:2013/05/05 14:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!