スレッド表示 | フラット表示〕 全トピック 920 件中 141 番目 次≫ ≪前

タグを有効にしたい

created: 2007-02-12 17:11 | modified: 2007-02-14 05:36 | reply: 2

[3579] タグを有効にしたい

user: さとし | created: 2007-02-12 17:11
こんにちは。
メッセージ投稿に際してタグを有効にしたいのですが、
なかなか上手く動いてくれません。
  $str="aaa<b>aaa</b>aaa</b>";
$str=htmlspecialchars($str);
$str=preg_replace(
"/&lt;b&gt;(.+)&lt;\/b&gt;/s",
"<b>$1</b>",$str
);
こうすると最後のタグまで太字になるので(.+)部分を
</b>以外の一文字以上にしたいのですが、どうすれば可能でしょうか?

こうすると中のすべての文字が拒否されてしまいます。
[^(&lt;\/b&gt;)]

終了タグだけ拒否する方法を教えて下さい。
また、こういったタグを有効にする方法の定石みたいなのが
あれば教えて下さい。
reply: 3580 返信 編集 削除

[3580] 単純に置換ではダメでしょうか?

user: | created: 2007-02-13 23:17
お書きになっているスクリプトの流れを見ますと、
「まず始めに一通りHTMLエスケープをかけて、その後で
有効にしたいタグだけ(この場合は<B>)を戻す」、
という処理をしたいんですよね?

とすれば、ごく普通に、3行目以降を
$str=preg_replace(
"/&lt;b&gt;/s",
"<b>",$str
);
$str=preg_replace(
"/&lt;\/b&gt;/s",
"</b>",$str
);
としてはダメなのでしょうか?

--------------------

>こうすると中のすべての文字が拒否されてしまいます。
>[^(&lt;\/b&gt;)]

これは、
「(&またはlまたはtまたは;または/またはbまたはg)以外」
という意味になります。「『&lt;/b&gt;』という一続きの
文字列以外」、とはならないんですね。
(たぶんお気づきかとは思いますが)
Parent: 3579  reply: 3581 返信 編集 削除

[3581] Re.単純に置換ではダメでしょうか?

user: さとし | created: 2007-02-14 05:36
おはようございます。

開始タグと終了タグを分けて変換すると、半端者も変換されてログが汚れるなと思っていました。

tableタグとか有効にするには相当手間がかかりそうですね。
もうちょい悩んでみます。
Parent: 3580  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 141 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑