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

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

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

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

Q&A

解決済

2回答

2432閲覧

PHPで文字列の範囲を指定して特定の文字を置換したいです

Newbie_

総合スコア22

PHP

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

0グッド

0クリップ

投稿2018/06/18 03:25

PHPで文字列の範囲を指定して特定の文字を置換したいです。

どういうことかというと、ある文字列に対して〇文字目から×文字目の範囲で特定の文字または文字列を別の文字列に置換したいです。

preg_replaceやstr_replaceだと特定の文字列を置換できますが範囲の指定はできないですし、substr_replaceでは範囲は指定できますがその範囲全てを指定した文字列で置換してしまいます。

何か方法はありますでしょうか?
よろしくお願いします。

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

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

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

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

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

m.ts10806

2018/06/18 03:43

このままでは丸投げとなるので( https://teratail.com/help/avoid-asking )調べてみたこと、やってみたこと(そのソースコード)を具体的に追記してください。また参考先サイトがあればURLも質問に追記してください。既に見た先が回答についてしまうと無駄なやり取りが発生しますし、もしかしたら参考記事の理解が間違っているために解決に至れていないのかもしれません。https://teratail.com/help/question-tips#questionTips1-2
guest

回答2

0

ベストアンサー

たとえばこう

11文字目から20文字目の1か4か0をxに変換

PHP

1$str="123456789012345678901234567890"; 2$pattern="/(?<=^.{10}).{10}/"; 3$replacement=function($x){ 4 $pattern="/1|4|0/"; 5 $replacement="x"; 6 return preg_replace($pattern,$replacement,$x[0]); 7}; 8print preg_replace_callback($pattern,$replacement,$str); 9

投稿2018/06/18 04:26

yambejp

総合スコア114839

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

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

Newbie_

2018/06/18 08:41

ご回答いただきありがとうございます。preg_replace_callbackは正直まだ理解不足で使用したことがなかったのですが、大変参考になりました。ありがとうございます。
guest

0

正規表現とpreg_replace()で出来そうな気もしますが、以下の様にするのも手です。
記述としては冗長になりますが、デバッグはしやすくなると思います。

  1. substr()かmb_substr()で範囲内の文字列を取得
  2. 同様に範囲の前後の文字列も取得
  3. str_replace()で範囲内の文字列を置換
  4. 置換後の範囲内文字列を2で取得した範囲前後の文字列と結合

投稿2018/06/18 03:54

tanat

総合スコア18713

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

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

Newbie_

2018/06/18 08:39

ご回答いただきありがとうございます。確かにそれで出来ますね。なぜ自分で思いつかなかったのか...。教えていただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問