<<<
と
>>>
で括った行は、整形済み行となりますが、その場合にWin+IE限定ですが、内容をコピーできる[COPY]ボタンを表示するようにしました。
XOOPSコードの[code][/code]に施した改造とほぼ同様の表示なります。
こんな感じです。入れ子はこのように処理されます。長文を書いてみます。 *** u:\class\module.textsanitizer.php Fri Aug 15 11:53:02 2003 --- t:class\module.textsanitizer.php Thu Feb 26 10:46:44 2004 *************** *** 129,137 **** **/ function &makeClickable(&$text) { ! $patterns = array("/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([^, \r\n\"\(\)'<>\[\]]+)/i"); ! $replacements = array("\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", "\\1<a href=\"http://www.\\2.\\3\" target=\"_blank\">www.\\2.\\3</a>", "\\1<a href=\"ftp://ftp.\\2.\\3\" target=\"_blank\">ftp.\\2.\\3</a>", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>"); ! return preg_replace($patterns, $replacements, $text); } /** --- 129,160 ---- **/ function &makeClickable(&$text) { ! $patterns = array( ! "/(^|[^\]_a-z0-9-=\"'\/])(\[\[((?:(?!\]\]).)+)(>|>|:))((?:https?|ftp|news):\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+)(\]\])/i", ! "/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([^, \r\n\"\(\)'<>]+)/i", ! "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", ! "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", ! "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([^, \r\n\"\(\)'<>\[\]]+)/i" ! ); ! $replacements = array( ! "\\1<a href='\\5' target='_blank'>\\3</a>", ! "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", ! "\\1<a href=\"http://www.\\2.\\3\" target=\"_blank\">www.\\2.\\3</a>", ! "\\1<a href=\"ftp://ftp.\\2.\\3\" target=\"_blank\">ftp.\\2.\\3</a>", ! "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>" ! ); ! $texts = preg_split("/\[code].*\[\/code\]/sU",$text); ! preg_match_all("/\[code].*\[\/code\]/sU",$text,$match,PREG_PATTERN_ORDER); ! $match[0][] = ""; ! $ret = ""; ! $i=0; ! foreach($texts as $block) ! { ! $ret .= preg_replace($patterns, $replacements, $block).$match[0][$i]; ! $i++; ! } ! return $ret; ! //return preg_replace($patterns, $replacements, $text); } /** *************** *** 147,153 **** $patterns = array(); $replacements = array(); $patterns[] = "/\[code](.*)\[\/code\]/esU"; ! $replacements[] = "'<div class=\"xoopsCode\"><code><pre>'.wordwrap(MyTextSanitizer::htmlSpecialChars('\\1'), 100).'</pre></code></div>'"; // RMV: added new markup for intrasite url (allows easier site moves) // TODO: automatically convert other URLs to this format if XOOPS_URL matches?? $patterns[] = "/\[siteurl=(['\"]?)([^\"'<>]*)\\1](.*)\[\/siteurl\]/sU"; --- 170,177 ---- $patterns = array(); $replacements = array(); $patterns[] = "/\[code](.*)\[\/code\]/esU"; ! //$replacements[] = "'<div class=\"xoopsCode\"><code><pre>'.wordwrap(MyTextSanitizer::htmlSpecialChars('\\1'), 100).'</pre></code></div>'"; ! $replacements[] = "'<div class=\"xoopsCode\"><code><pre>'.trim(MyTextSanitizer::htmlSpecialChars('\\1',true),'\r\n').'</pre></code></div>'"; // RMV: added new markup for intrasite url (allows easier site moves) // TODO: automatically convert other URLs to this format if XOOPS_URL matches?? $patterns[] = "/\[siteurl=(['\"]?)([^\"'<>]*)\\1](.*)\[\/siteurl\]/sU"; *************** *** 158,170 **** $replacements[] = '<a href="\\2" target="_blank">\\3</a>'; $patterns[] = "/\[url=(['\"]?)([^\"'<>]*)\\1](.*)\[\/url\]/sU"; $replacements[] = '<a href="http://\\2" target="_blank">\\3</a>'; ! $patterns[] = "/\[color=(['\"]?)([a-zA-Z0-9]*)\\1](.*)\[\/color\]/sU"; $replacements[] = '<span style="color: #\\2;">\\3</span>'; ! $patterns[] = "/\[size=(['\"]?)([a-z0-9-]*)\\1](.*)\[\/size\]/sU"; $replacements[] = '<span style="font-size: \\2;">\\3</span>'; ! $patterns[] = "/\[font=(['\"]?)([^;<>\*\(\)\"']*)\\1](.*)\[\/font\]/sU"; $replacements[] = '<span style="font-family: \\2;">\\3</span>'; ! $patterns[] = "/\[email]([^;<>\*\(\)\"']*)\[\/email\]/sU"; $replacements[] = '<a href="mailto:\\1">\\1</a>'; $patterns[] = "/\[b](.*)\[\/b\]/sU"; $replacements[] = '<b>\\1</b>'; --- 182,194 ---- $replacements[] = '<a href="\\2" target="_blank">\\3</a>'; $patterns[] = "/\[url=(['\"]?)([^\"'<>]*)\\1](.*)\[\/url\]/sU"; $replacements[] = '<a href="http://\\2" target="_blank">\\3</a>'; ! $patterns[] = "/\[c(?:olor)?=(['\"]?)([a-zA-Z0-9]*)\\1](.*)\[\/c(?:olor)?\]/sU"; $replacements[] = '<span style="color: #\\2;">\\3</span>'; ! $patterns[] = "/\[s(?:ize)?=(['\"]?)([a-z0-9-]*)\\1](.*)\[\/s(?:ize)?\]/sU"; $replacements[] = '<span style="font-size: \\2;">\\3</span>'; ! $patterns[] = "/\[f(?:ont)?=(['\"]?)([^;<>\*\(\)\"']*)\\1](.*)\[\/f(?:ont)?\]/sU"; $replacements[] = '<span style="font-family: \\2;">\\3</span>'; ! $patterns[] = "/\[e(?mail)?]([^;<>\*\(\)\"']*)\[\/e(?:mail)?\]/sU"; $replacements[] = '<a href="mailto:\\1">\\1</a>'; $patterns[] = "/\[b](.*)\[\/b\]/sU"; $replacements[] = '<b>\\1</b>'; *************** *** 212,218 **** */ function &nl2Br($text) { ! return preg_replace("/(\015\012)|(\015)|(\012)/","<br />",$text); } /** --- 236,272 ---- */ function &nl2Br($text) { ! static $count = 0; ! $match = array(); ! $texts = preg_split("/<div class=\"xoopsCode\"><code><pre>.*<\/pre><\/code><\/div>/sU",$text); ! if (preg_match_all("/<div class=\"xoopsCode\"><code><pre>.*<\/pre><\/code><\/div>/sU",$text,$match,PREG_PATTERN_ORDER)) ! $count ++; ! ! $match[0][] = ""; ! $ret = ""; ! $i=0; ! foreach($texts as $block) ! { ! $match[0][$i] = preg_replace("/(\015\012)|(\015)|(\012)/","\n",$match[0][$i]); ! $c_line = count(explode("\n",$match[0][$i])) * 14 + 32; //Set 'line-height:14px;' on css. ! if (!empty($match[0][$i])) ! { ! if ($c_line < 420) ! $match[0][$i] = str_replace("<div class=\"xoopsCode\">","<div class=\"xoopsCode\" style=\"height:".$c_line."px;\">",$match[0][$i]); ! else ! $match[0][$i] = str_replace("<div class=\"xoopsCode\">","<div class=\"xoopsCode\" style=\"height:420px;\">",$match[0][$i]); ! ! $j_script = "<script type=\"text/javascript\"><!--\nh_xoops_make_copy_button('code_area".$count."_".$i."');\n--></script>"; ! $bef = array("<pre>","</div>"); ! $aft = array("<pre id=\"code_area".$count."_".$i."\">", "</div>".$j_script); ! $match[0][$i] = str_replace($bef,$aft,$match[0][$i]); ! } ! else ! $match[0][$i] = ""; ! $ret .= preg_replace("/(\015\012)|(\015)|(\012)/","<br />\n",$block).$match[0][$i]; ! $i++; ! } ! return $ret; } /** *************** *** 250,257 **** * * @return string */ ! function &htmlSpecialChars($text) { //return preg_replace("/&/i", '&', htmlspecialchars($text, ENT_QUOTES)); return preg_replace(array("/&/i", "/ /i"), array('&', '&nbsp;'), htmlspecialchars($text, ENT_QUOTES)); } --- 304,312 ---- * * @return string */ ! function &htmlSpecialChars($text,$strip=false) { + if ($strip) $text = stripslashes($text); //return preg_replace("/&/i", '&', htmlspecialchars($text, ENT_QUOTES)); return preg_replace(array("/&/i", "/ /i"), array('&', '&nbsp;'), htmlspecialchars($text, ENT_QUOTES)); } *************** *** 262,269 **** * @param string $text * @return string **/ ! function &undoHtmlSpecialChars(&$text) { return preg_replace(array("/>/i", "/</i", "/"/i", "/'/i"), array(">", "<", "\"", "'"), $text); } --- 317,325 ---- * @param string $text * @return string **/ ! function &undoHtmlSpecialChars(&$text,$strip=false) { + if ($strip) $text = stripslashes($text); return preg_replace(array("/>/i", "/</i", "/"/i", "/'/i"), array(">", "<", "\"", "'"), $text); }
| Page name: | PukiWiki作業日記/2004-02-26 [ Sended pings(0) ] | |
| Author: | nao-pon | - 2004/02/26 22:40:42 JST(1637d) |
| Last edit: | nao-pon | - 2004/02/26 22:40:42 JST(1637d) |
| Editers: | nao-pon | |
| Back Link: | コメント(85d) PukiWikiMod(91d) PukiWiki作業日記(418d) XOOPS(803d) | |
ログイン
アクティブメニュー
最新のページ
ブックマーク
新着トラックバック
サイト内 Wiki
☆ 検索 ☆
オンライン状況
サイト情報
現在ページのQRコード
参照元情報