タグを有効にしたい
created: 2007-02-12 17:11 | modified: 2007-02-14 05:36 | reply: 2
[3579] タグを有効にしたい
user: さとし | created: 2007-02-12 17:11
こんにちは。
メッセージ投稿に際してタグを有効にしたいのですが、
なかなか上手く動いてくれません。
</b>以外の一文字以上にしたいのですが、どうすれば可能でしょうか?
こうすると中のすべての文字が拒否されてしまいます。
[^(<\/b>)]
終了タグだけ拒否する方法を教えて下さい。
また、こういったタグを有効にする方法の定石みたいなのが
あれば教えて下さい。
メッセージ投稿に際してタグを有効にしたいのですが、
なかなか上手く動いてくれません。
$str="aaa<b>aaa</b>aaa</b>";
$str=htmlspecialchars($str);
$str=preg_replace(
"/<b>(.+)<\/b>/s",
"<b>$1</b>",$str
);
こうすると最後のタグまで太字になるので(.+)部分を</b>以外の一文字以上にしたいのですが、どうすれば可能でしょうか?
こうすると中のすべての文字が拒否されてしまいます。
[^(<\/b>)]
終了タグだけ拒否する方法を教えて下さい。
また、こういったタグを有効にする方法の定石みたいなのが
あれば教えて下さい。
[3580] 単純に置換ではダメでしょうか?
user: 箱 | created: 2007-02-13 23:17
お書きになっているスクリプトの流れを見ますと、
「まず始めに一通りHTMLエスケープをかけて、その後で
有効にしたいタグだけ(この場合は<B>)を戻す」、
という処理をしたいんですよね?
とすれば、ごく普通に、3行目以降を
--------------------
>こうすると中のすべての文字が拒否されてしまいます。
>[^(<\/b>)]
これは、
「(&またはlまたはtまたは;または/またはbまたはg)以外」
という意味になります。「『</b>』という一続きの
文字列以外」、とはならないんですね。
(たぶんお気づきかとは思いますが)
「まず始めに一通りHTMLエスケープをかけて、その後で
有効にしたいタグだけ(この場合は<B>)を戻す」、
という処理をしたいんですよね?
とすれば、ごく普通に、3行目以降を
$str=preg_replace(
"/<b>/s",
"<b>",$str
);
$str=preg_replace(
"/<\/b>/s",
"</b>",$str
);
としてはダメなのでしょうか?--------------------
>こうすると中のすべての文字が拒否されてしまいます。
>[^(<\/b>)]
これは、
「(&またはlまたはtまたは;または/またはbまたはg)以外」
という意味になります。「『</b>』という一続きの
文字列以外」、とはならないんですね。
(たぶんお気づきかとは思いますが)
[3581] Re.単純に置換ではダメでしょうか?
user: さとし | created: 2007-02-14 05:36
おはようございます。
開始タグと終了タグを分けて変換すると、半端者も変換されてログが汚れるなと思っていました。
tableタグとか有効にするには相当手間がかかりそうですね。
もうちょい悩んでみます。
開始タグと終了タグを分けて変換すると、半端者も変換されてログが汚れるなと思っていました。
tableタグとか有効にするには相当手間がかかりそうですね。
もうちょい悩んでみます。