
あいうえおかきくけこあいうえおあいうえお
という文字列があった時、
初回の「あいうえお」のみ空に置換して
かきくけこあいうえおあいうえお
としたいのですが、str_replace()だと全部置換されてしまいますし、
preg_replace()やmb_ereg_replace()ではうまく置換されません。
対象とする文字列は、実際はHTMLタグやマルチバイトが混じっています。
置換するべき文字列は、全く同様のものが対象文字列内にも必ず含まれています。
preg_replace()やmb_ereg_replace()でも可能なのかもしれませんが、
どうやればいいのか分かりませんでした。
どなたかご教示下さい。
No.1ベストアンサー
- 回答日時:
> str_replace()だと全部置換されてしまいますし、
> preg_replace()やmb_ereg_replace()ではうまく置換されません。
preg_replace/mb_ereg_replace でも全置換になりそうな気がするのですが
どのように「うまく置換されなかった」のでしょうか?
それはさておき、
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] )
のように、省略可能な引数の中に
limit
subject 文字列において、各パターンによる 置換を行う最大回数。デフォルトは -1 (制限無し)。
というのがありますので、ここに1を設定して実行すればよいのではないでしょうか?
この回答への補足
なんか色々試していたら、以下で出来ました。
$str = '<a href="aaa.html">あいうえお</a>かきくけこ<a href="aaa.html">あいうえお</a>';
$var = '<a href="aaa.html">あいうえお<\/a>'; //先に色々処理した結果
$str = preg_match("/".$var."/", "", $str, 1);
最初に試してみた時にはエラーも出ず置換もされず、だったのですが、
その時の状態が既にもうない為再現する事が出来ませんでした。
上記で可能である事が分かりましたが、色々処理した結果に特殊文字を
エスケープしてあげないといけないので、素直に文字数を取得して
mb_substr()させるようにしようかと思います。
スピード的にどっちが早いのか分かりませんが。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPの¥
-
Accessの文字数を調べたい
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
C++で空Enterの入力を判...
-
PHP+Postgres 「髙」が文字化け
-
バーコード入力と手入力の判断...
-
FORTRANで作成したテキストファ...
-
メッセージボックスで1025文字...
-
文字化け変換方法
-
1行ごとに取得して、その改行...
-
CSVファイルの改行コード判別
-
カンマの含まれる文字列の数値...
-
エクセルのCOUNTIFが正しくカウ...
-
マクロで半角を全角に
-
配列のから一致する文字列を検...
-
文字列を文字コードの数値に変...
-
preg_matchでエラーが出ます。
-
ダイアログにおける改行
-
改行コード2種類を混在させたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
VBSで"をエスケープする文字は?
-
○分から○時間○分に変換
-
文字列のアスタリスク置換
-
入力文字に\\マークが入ってい...
-
文字列の括弧について(初心者)
-
c# string型の変数に、ダブルク...
-
近似した文字列を置換するエク...
-
PHPでjavascriptを書き出すとき...
-
文字列から、特定の文字を削除...
-
PHPの¥
-
空白文字のカンマへの変換について
-
REGEXREPLACE関数について、
-
$text = "
-
PHP 文字列から必要な部分を抜...
-
PHPの正規表現について
-
dirnameでパスが正しく取れない...
-
str_replaceで文字化け
-
PHPで「,」を「, 」へ置換した...
おすすめ情報