1 頁 (共 1 頁)

[已解決]改良型引言,引文中如果有 " 會出問題

發表於 : 2007-04-22 01:32
小斌
問題外掛:改良型引言 (Extended Quote Tag)
參考連結: http://phpbb-tw.net/phpbb/viewtopic.php?t=28049
使用版本:phpBB 2.0.22
網站位置: http://shiaobin.dyndns.org/phpBB2/
狀況描述:

在裝好這個以後,我還依照這一篇 ( http://phpbb-tw.net/phpbb/viewtopic.php?p=254307#254307 ) 做了修改。
目前在大多數情況下,這個功能是運作良好的;不過如果在文章中有 " (雙引號)存在的話,就會出問題。

如果是直接在閱讀文章的頁面按了引言,到是不會有問題;不過如果是先按了回覆文章,然後再從頁面下方的文章中按了引言,
則內文原本是 " 的地方,全都會變成 " ,而且在 quote 語法的地方,也不會自動出現正確的文章編號。

圖檔
▲錯誤情況如圖,原本是 " 的地方,全都變成 " 了。圖中有兩個引言,第一個是在觀看文章內容的頁面按下引言產生的,第二個是在回覆文章的頁面中在下方顯示文章的區塊按下引言產生的。

在這裡有搜尋過,不過並沒有發現類似的情況。在此感謝您的注意~

測試帳號/密碼:test/test

已安裝的外掛:
Small ShoutBox 1.4 (phpBBHacks.com)
Prune users 1.4.3 (竹貓星球)
Resend Activation 1.0.0 (竹貓星球)
Signatures control 1.2.3 (phpBB 官方論壇)
Last visit 1.2.10 (竹貓星球)
Topic Floor 1.0.0 (竹貓星球)

此外掛相關檔案內容: (Powered by PHP pastebin)
viewtopic.php
posting.php
includes/bbcode.php
includes/topic_review.php
templates/subSilver/bbcode.tpl
templates/subSilver/posting_topic_review.tpl
templates/subSilver/viewtopic_body.tpl
show_post.php
templates/subSilver/post_review.tpl

--
●架設主機作業系統:Windows Xp Professional SP2
●快速架站程式:Appserv2.4.8
●您的上網方式:ADSL
●您安裝的程式:Apache + php + MySql
●您的 phpBB2 版本:phpBB 2.0.22
●您的 domain(網域名稱) :shiaobin.dyndns.org
●您的 phpBB2 連結網址: http://shiaobin.dyndns.org/phpBB2/

發表於 : 2007-04-22 12:55
心靈捕手
建議您:
1. 提供測試用帳號與密碼
2. 將下列檔案壓縮後, 貼出下載連結
viewtopic.php

發表於 : 2007-04-22 16:20
小斌
心靈捕手 寫:建議您:
1. 提供測試用帳號與密碼
2. 將下列檔案壓縮後, 貼出下載連結
viewtopic.php
感謝您的提醒。

測試帳號/密碼:test/test
viewtopic.php

發表於 : 2007-04-22 17:53
~倉木麻衣~
應該是要給posting.php才對, 看起來像是topicreview的部份需要修

發表於 : 2007-04-22 20:56
心靈捕手
小斌 寫:
心靈捕手 寫:建議您:
1. 提供測試用帳號與密碼
2. 將下列檔案壓縮後, 貼出下載連結
viewtopic.php
感謝您的提醒。

測試帳號/密碼:test/test
viewtopic.php
經過測試, 我不太懂您底下這句話的意思, 請補充說明.
啊啊……如果是在「回覆文章」的頁面,從下面的地方選擇引言,就會出了問題。
怎麼辦啊~~
Source: http://shiaobin.dyndns.org/phpBB2/viewtopic.php?p=11#11

發表於 : 2007-04-22 21:44
~倉木麻衣~
心靈捕手 寫:經過測試, 我不太懂您底下這句話的意思, 請補充說明.
他的意思就是這樣子
圖檔

發表於 : 2007-04-23 03:02
小斌
的確就是如同倉木麻衣所講的那樣,感謝您的補充。 :)
另外, posting.php 已經有在第一篇提供了,如果需要請找找看。

發表於 : 2007-04-23 06:33
~倉木麻衣~
你的posting.php應該有改錯, 或是自行去掉了;p之前的雙引號「"」
難怪我一直無法完全模擬出你站上的狀況
問題點主要是在topic_review.php及bbcode.php上
修改後的demo, 測試用帳/密:guest/test

#
#--------[ OPEN ]----------------
#
posting.php

#
#--------[ FIND ]----------------
#

代碼: 選擇全部

			$message = '[quote="' . $quote_username . ';p=' . $post_id . '"]' . $message . '[/quote]';
#
#--------[ REPLACE WITH ]----------------
#

代碼: 選擇全部

			$message = '[quote="' . $quote_username . '";p=' . $post_id . '"]' . $message . '[/quote]';
#
#--------[ OPEN ]----------------
#
includes/bbcode.php

#
#--------[ FIND ]----------------
#

代碼: 選擇全部

	// [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff.
	$text = bbencode_first_pass_pda($text, $uid, '[quote]', '[/quote]', '', false, '');
#
#--------[ BEFORE, ADD ]----------------
#

代碼: 選擇全部

	// [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff with an pre-defined post entry
	$text = bbencode_first_pass_pda($text, $uid, '/\[quote=p=\\\\"([0-9]+)\\\\"\]/is', '[/quote]', '', false, '', "[quote:$uid=p=\\\"\\1\\\"]");

	$text = bbencode_first_pass_pda($text, $uid, '/\[quote=\\\\"([^"]*?)\\\\";p=\\\\"([0-9]+)\\\\"\]/is', '[/quote]', '', false, '', "[quote:$uid=\\\"\\1\\\";p=\\\"\\2\\\"]");
#
#--------[ FIND, ADD DELETE ]----------------
#

代碼: 選擇全部

	// [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff with an pre-defined post entry
//	$text = bbencode_first_pass_pda($text, $uid, '/\[quote=p=(\\\\"[0-9]+\\\\")\]/is', '[/quote]', '', false, '', "[quote:$uid=p=\\1]");

//	$text = bbencode_first_pass_pda($text, $uid, '/\[quote=(\\\\"[^"]*?\\\\");p=(\\\\"[0-9]+\\\\")\]/is', '[/quote]', '', false, '', "[quote:$uid=\\1;p=\\2]");
#
#--------[ OPEN ]----------------
#
includes/topic_review.php

#
#--------[ FIND ]----------------
#

代碼: 選擇全部

			$plain_message = str_replace('<', '<', $plain_message);
			$plain_message = str_replace('>', '>', $plain_message);
#
#--------[ REPLACE WITH ]----------------
#

代碼: 選擇全部

			$plain_message = str_replace('<', '<', $plain_message);
			$plain_message = str_replace('>', '>', $plain_message);
			$plain_message = str_replace('"', '"', $plain_message);
#
#--------[ SAVE/CLOSE ALL FILES ]----------------
#
# EoM

發表於 : 2007-04-23 08:49
心靈捕手
~倉木麻衣~ 寫:你的posting.php應該有改錯, 或是自行去掉了;p之前的雙引號「"」
難怪我一直無法完全模擬出你站上的狀況
問題點主要是在topic_review.php及bbcode.php上
修改後的demo, 測試用帳/密:guest/test

#
#--------[ OPEN ]----------------
#
posting.php

#
#--------[ FIND ]----------------
#

代碼: 選擇全部

			$message = '[quote="' . $quote_username . ';p=' . $post_id . '"]' . $message . '[/quote]';
#
#--------[ REPLACE WITH ]----------------
#

代碼: 選擇全部

			$message = '[quote="' . $quote_username . '";p=' . $post_id . '"]' . $message . '[/quote]';
小斌 的 posting.php 是參考此文修改.
http://phpbb-tw.net/phpbb/viewtopic.php?p=254307#254307

不過, 這個地方只要還原外掛所新增的原始碼即可.

代碼: 選擇全部

			$message = '[quote="' . $quote_username . '";p="' . $post_id . '"]' . $message . '[/quote]';
也就是說, 升級 phpBB 2.0.19 以上者, 安裝此外掛, 不必修改此檔;
只要修改topic_review.php及bbcode.php即可.

發表於 : 2007-04-23 11:33
~倉木麻衣~
心靈捕手 寫:小斌 的 posting.php 是參考此文修改.
http://phpbb-tw.net/phpbb/viewtopic.php?p=254307#254307
原來如此, 那麼還得將posting_topic_review.tpl還原才行

該篇文章的修改會有一個問題產生, 就是某些文章編號(post_id)會被視為8進制處理
例如(節錄部份內容):

代碼: 選擇全部

message[15] = "[quote="test\;p=\15"][quote="test;p=13"]test\n[quote]\n啊啊……如果是在「回覆文章」的頁面";
message[12] = "[quote="test\;p=\12"][quote="Shiaobin;p=10"]文章中的"引號"會怎麼被引用呢……";
message[10] = "[quote="Shiaobin\;p=\10"]文章中的"引號"會怎麼被引用呢";
\10、\12、\15會被視為8進制的數值, 相當於10進制的8、10、13
也就是ASCII碼裡的Backspace、newline、carriage return
然後又受到該mod在bbocde.php裡p=之後的資料必須為數字[0-9]+的限制
所以有部份的引言就會變成

代碼: 選擇全部

Shiaobin;p= 寫到:

代碼: 選擇全部

test;p= 
寫到:
這類奇奇怪怪的格式了

發表於 : 2007-04-24 04:37
小斌
真的非常感謝心靈捕手倉木麻衣提供的大力協助。:mrgreen:
這個問題已經獲得了完美的解決了!