![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在、掲示板をPHPで作っています。
入力された文字列の無効化と許可タグの分別に正規表現を使いたいと考えております。
そこで、現状では、まずすべての < > を特殊文字に変換し、その後に、許可タグ(属性)のタグを < > にもどそうとしています。
たとえば、fontタグならcolorとsizeを許可しようとして、次のような正規表現を作ってみましたが、うまくいきません。
/<font((( )*(color=)[\"\']?.{1,7}[\"\']?)|(( )*(size=)[\"\']?.{1,2}[\"\']?))*>/i
正規表現はまだ勉強し始めたところで、おかしなところだらけだと思いますが、何かヒントだけでもいただけたらと思います。
どうぞよろしくお願いします。
No.1ベストアンサー
- 回答日時:
$extention[] = "/<(font(?:(?: color=[\"\']?(?:")?[#0-9a-z]{1,20}[\"\']?(?:")?)?|(?: size=[\"\']?(?:")?[\d]{1,2}[\"\']?(?:")?)?)*)>/i";
$extention[] = "#<(/font)>#i";
foreach($extention as $ext){
$tag = preg_replace($ext,"<$1>",$tag);
}
こんなのはどうでしょうか。
多分" や 'が"になってるんじゃないかな?と思います。
勘ですが。
お礼が遅くなってしまい申し訳ございませんでした。
ご教示いただいたとおり試してみますと、キッチリしていした属性の時のみ処理できるようになりました。
しかし、下記のように
$tag = "<font size=10 color='red'>テスト</font>";
$tag = str_replace(array("<",">"),array("/<",">#i"),$tag);
foreach($extention as $ext){
$tag = preg_replace($ext,"<$1>",$tag);
}
print $tag;
とすると、結果が
/<font size=10 color='red'>#iテスト/</font>#i
と、タグの前後に / #i がついてしまうのです。
勉強不足で試行錯誤を繰り返しているのですが、
2つ目の正規表現のデリミタ部分にある # は何を表しているのでしょうか?
これを / に変えるとエラーとなってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- HTML・CSS スマホ表示用のwebページ、style.cssでは表の中の文字 font-size は指定できない? 1 2023/03/27 18:57
- WordPress(ワードプレス) ワードプレスで、投稿一覧ページにタグを表示する方法 投稿につけたタグを、記事一覧ページにもカテゴリと 1 2023/05/10 21:41
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数にHTMLを代入する場合
-
[php][正規表現]タグ以外を削除...
-
eclipseより、タスク・タグの使...
-
PHPの正規表現でHTMLタグの内容...
-
オリジナルタグをHTMLタグに置...
-
str_get_htmlがこける原因を知...
-
VBSでのhtmlタグ要素名の置換
-
phpの正規表現でstyle="●●"を削...
-
htmlでflashを開く、画面サイズ...
-
正規表現で複数行に渡る範囲を...
-
正規表現でタグの置換をしたい...
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
メッセージボックスで1025文字...
-
ソースコードの1行が長いとき...
-
文字の入力で横バー上段、中断...
-
文字列の括弧について(初心者)
-
エクセルVBA 文字列領域が不足...
-
全角括弧と全角読点の間隔を狭...
-
C++でのCRLFについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
reuterの記事をbeautiful.soup....
-
変数にHTMLを代入する場合
-
Nvuで作成したhtmlをコピペして...
-
srcに「banner.」で始まるファ...
-
[php][正規表現]タグ以外を削除...
-
PHPの正規表現でHTMLタグの内容...
-
htmlでflashを開く、画面サイズ...
-
csobjというタグについて
-
正規表現でHTMLタグの属性まで...
-
正規表現でタグの置換をしたい...
-
HTMLファイルの書き換え
-
★PHP★フォーム登録時にタグを読...
-
PHP4→5にアップグレードしたら...
-
オリジナルタグをHTMLタグに置...
-
print "<img src=\\"0.jpg\\/>\...
-
Strutsでリンクを動的に生成したい
-
正規表現で複数行に渡る範囲を...
-
PHP Webページのタイトルを取得...
-
リッチテキストエディターでの...
-
MP3のコメントタグやSYLTの詳細
おすすめ情報