<?
$text ="u&ampfayv&in&e6&rna6uinv";
/////////////////////////////
print $text."<br>";
print "<XMP>".$text."</XMP><br>";
///////////////////////////////正規表現で置換
$text = preg_replace('/&[^amp]/', "■", $text);
//////////////////////////////
print $text."<br>";
print "<XMP>".$text."</XMP><br>";
//////////////////////////////
print "u&ampfayv&in&e6■rna6uinv";
print "<XMP>u&ampfayv&in&e6■rna6uinv</XMP>";
?>
$textの文字列の中にある & を ■ に変えたいです。
amp という文字列の前についている & は ■ に置換してはいけません。
&amp という文字列の前についている & も ■ に置換してはいけません。
現在の正規表現では r が消えてしまっています。
ブラウザで見た場合に結果が u&fayv&in&e6■rna6uinv になるようにして下さい。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
否定的 先読み 正規表現 などのキーワードでGoogleなどで検索すると、サンプルが出てくると思います。
(例えば、参考URLのページ。)参考URL:http://www4.ocn.ne.jp/~kaerume/k2e/regex_3.html
No.2
- 回答日時:
$text = preg_replace("/&(?!amp)/","■",$text);
結果
u&ampfayv&in&e6■rna6uinv
&ampを&にしていませんので指定する結果とは異なります。
どんなことしてるかわかりませんが&ampを見る限り
エンコードの順序等を見直したほうがいいんじゃないでしょうか
No.3
- 回答日時:
いまいち状況がわかりませんが、こんなことなんでしょうか?
<?PHP
$text ="u&ampfayv&in&e6&rna6uinv";
print $text."<br>";
$text = preg_replace(Array('/&([^amp])/','/&/'), Array('■$1','&'), $text);
print $text."<br>";
?>
No.4
- 回答日時:
正規表現の解説書を読み直したほうがよろしいかと。
[] の中にあるのは文字列として扱われることはありませんから、
&[^amp]
とかいても、& のあとに amp が続かないものという意味にはなりません。
#2の方の回答にあるように、否定先読みを使うべきでしょう。
使わないでも書けますけど面倒ですから。
ところで
> u&ampfayv&in&e6&rna6uinv
& とセミコロンがちゃんとついていないとアンパサンドには
ならないような気がしますけどそれはよいのでしょうか?
一部には余計な気を回してくれるブラウザはあるかもしれませんが、
Firefoxではだめでしたよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列の置換をCStringで(C++)
-
○分から○時間○分に変換
-
PHP、正規表現の使い方
-
空白文字のカンマへの変換について
-
VBAのコマンドボタンの文字列の...
-
メッセージボックスで1025文字...
-
エスケープ文字の復帰(¥r)と...
-
ソースコードの1行が長いとき...
-
全角括弧と全角読点の間隔を狭...
-
文字の入力で横バー上段、中断...
-
カンマの含まれる文字列の数値...
-
Excelで数字のみを2倍3倍にする...
-
awkで改行を除いて文字列を抜き...
-
JavaMail,本文中の改行について
-
C++でのCRLFについて
-
なぜインターネットでは半角カ...
-
グレープシティのSPREAD...
-
全角英数文字が嫌われる理由を...
-
1行ごとに取得して、その改行...
-
fputsで改行できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSで"をエスケープする文字は?
-
ダブルコーテーション(
-
文字列の置換をCStringで(C++)
-
文字列の括弧について(初心者)
-
nl2brが効かないのですが・・・
-
○分から○時間○分に変換
-
ダブルクォーテーションが置換...
-
PHPの¥
-
php 正規表現で、\\マークを取...
-
c# string型の変数に、ダブルク...
-
不規則なaタグのスクレイピング...
-
【PHP】preg_replace() で正...
-
Smartyで携帯絵文字を表示する方法
-
htmlspecialchars関数でエスケ...
-
独自タグに囲まれた文字列の変換
-
dirnameでパスが正しく取れない...
-
sedでの最短一致の書き方
-
2バイトローマ数字小文字につ...
-
入力文字に\\マークが入ってい...
-
正規表現でお尻から検索
おすすめ情報