行頭にスラッシュを一個だけ書いた行が処理されない

メッセージ

雑談で出た話なんですが。 html.phpのconvert_html中で、

if(!preg_match("/^\/\/(.*)/",$line,$comment_out) && $table != 0)

ここでは、行頭スラッシュ2個のときに$comment_outを設定している(行頭スラッシュ1個の時には$comment_outは空)にもかかわらず、

// 行頭書式かどうかの判定
$line_head = substr($line,0,1);
if($line_head == ' ' || 
... snip ...
$line_head == '/'

ここでは、「行頭にスラッシュが一個あれば」の条件で処理を開始し、 最後に

else if(strlen($comment_out) != 0)

で実際のコメント処理を行っています。 行頭スラッシュ一個の行は、この流れに乗せると $comment_outがセットされないのに行頭スラッシュがあるので if(strlen($comment_out) != 0)を含むどの条件にも引っかからずに捨てられてしまう…ということになってしまいます。

で、改善案ですが。

 		// 行頭書式かどうかの判定
 		$line_head = substr($line,0,1);
 		if($line_head == ' ' || 
 			$line_head == ':' || 
 			$line_head == '>' || 
 			$line_head == '-' || 
 			$line_head == '+' || 
 			$line_head == '|' || 
 			$line_head == '*' || 
 			$line_head == '#' || 
-			$line_head == '/'
+			$comment_out != ''

または

+			strlen($comment_out) != 0

としたらどうでしょうか。



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2002-08-05 (月) 19:13:52
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.278 sec.

SourceForge