0

HTMLタグ、HTMLスペース文字、および次のような文字からテキストを消去したい< > [ ] / \ * ,

私は $str = preg_replace("/&#?[a-zA-Z0-9]+;/i", "", $str); それをhtmlの特殊文字でうまく機能させましたが、一部の文字は次のように削除されません: ( /*/*]]>*/)

これらの文字を削除するにはどうすればよいですか?

4

2 に答える 2

1

実際に php を使用している場合は、次のように使用できます。

$str = htmlspecialchars($str);

すべての HTML 文字はエスケープされます (これは単にそれらを取り除くよりも優れている可能性があります)。これらの文字を本当にフィルタリングしたい場合は、chars リストでこれらの文字をエスケープする必要があります。

$str = preg_replace("/[\&#\?\]\[\/\\\<\>\*\:\(\);]*/i","",$str);

「/[]*/i」が 1 つだけあることに注意してください。これらの文字が必要なため、a-zA-Z0-9 を削除しました。文字列に入力する必要のある文字のみを分類することもできます (アクセント記号で問題が発生します)。 á é ü のように使用する場合は、受け入れられるすべての文字を指定する必要があります):

$str = preg_replace("/[^a-zA-Z0-9áÁéÉíÍãÃüÜõÕñÑ\.\+\-\_\%\$\@\!\=;]*/","",$str);

また、たとえば間隔の場合を除き、エスケープ文字が多すぎることはないことに注意してください (\a-\z は問題なく、\a-\z は a、または -、または z に一致します)。

お役に立てば幸いです。:)

于 2012-06-04T13:45:15.467 に答える
0

html タグの正規表現は次のとおりです。

/\<(.*)?\>/

したがって、次のようなものを使用します。

// The regular expression to remove HTML tags
$htmltagsregex = '/\<(.*)?\>/';

// what shit will substitute it
$nothing = '';

// the string I want to apply it to
$string = 'this is a string with <b>HTML tags</b> that I want to <strong>remove</strong>';

// DO IT
$result = preg_replace ($htmltagsregex,nothing,$string);

そしてそれは戻ってくる

これは、削除したい HTML タグを含む文字列です

それで全部です

于 2013-09-09T20:00:35.973 に答える