Submitted by jiashixiang on 2008, August 10, 9:21 PM
$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。
$_SERVER['argv'] #传递给该脚本的参数。
$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
$_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称。
$_SERVER['SERVER_SOFTWARE'] #服务器标识的字串,在响应请求时的头部中给出。
$_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
$_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER['QUERY_STRING'] #查询(query)的字符串。
$_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。
$_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。
$_SERVER['HTTP_ACCEPT_ENCODING'] #当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。
$_SERVER['HTTP_ACCEPT_LANGUAGE']#当前请求的 Accept-Language: 头部的内容。例如:“en”。
$_SERVER['HTTP_CONNECTION'] #当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
$_SERVER['HTTP_HOST'] #当前请求的 Host: 头部的内容。
$_SERVER['HTTP_REFERER'] #链接到当前页面的前一页面的 URL 地址。
$_SERVER['HTTP_USER_AGENT'] #当前请求的 User_Agent: 头部的内容。
$_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址。
$_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的主机名。
$_SERVER['REMOTE_PORT'] #用户连接到服务器时所使用的端口。
$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。
$_SERVER['SERVER_ADMIN'] #管理员信息
$_SERVER['SERVER_PORT'] #服务器所使用的端口
$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。
$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。
$_SERVER['REQUEST_URI'] #访问此页面所需的 URI。例如,“/index.html”。
$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。
php学习 | 评论:0
| Trackbacks:0
| 阅读:1855
Submitted by jiashixiang on 2008, August 10, 9:19 PM
function getFullNameByAppid($appId, $type, $res_type,$name="")
{
$hashValue = md5($appId);
$dirOne = substr($hashValue,24,8)%1024;
$dirTwo = substr($hashValue,16,8)%1024;
$dirTree= substr($hashValue,8,0)%1024;
if( $dirOne <= 341 )
$dir = FILE_PATH_BASE.SERVER1.$res_type.'/'.$dirOne.'/'.$dirTwo.'/'.$dirTree.'/';
elseif( $dirOne <= 682 )
$dir = FILE_PATH_BASE.SERVER2.$res_type.'/'.$dirOne.'/'.$dirTwo.'/'.$dirTree.'/';
elseif( $dirOne <= 1024 )
$dir = FILE_PATH_BASE.SERVER3.$res_type.'/'.$dirOne.'/'.$dirTwo.'/'.$dirTree.'/';
else
{echo ' system error: file save error!\n ';exit;}
return $filename = $dir.md5($appId.'l'.mktime().$name).".".$type;
}
php学习 | 评论:0
| Trackbacks:0
| 阅读:1782
Submitted by jiashixiang on 2008, August 6, 9:13 AM
前言:
FCKeidtor是个国外的多语言编辑器,你可以对其配置文件进行简单修改使之支持目前常用Web开发语言的应用,下面我就讲讲FCKeditor的最新版本2.4.2在php的具体配置过程,有不足和出错的地方,欢迎指正。
精简:
正因为这个编辑器是支持多语言的,所以首先我们针对使用对其做相应的冗余文件删除。
1、临时文件及文件夹删除:从根目录下开始删除一切以“_”开头的文件及文件夹,因为他们为临时文件和文件夹。删除这类临时文件及文件夹之后,我们还要删除一些根目录下的多余文件,根目录下我们只保留fckconfig.js(配置文件)、fckeditor.js(js方式调用文件)、fckeditor.php(php方式调用文件,新版本通过该文件统一调用php4或者php5的调用文件,fckeditor_php4.php/fckeditor_php5.php你可以根据自己服务器使用的情况删减,建议都保留)、fckeditor_php4.php(php4的调用文件)、fckeditor_php5.php(php5的调用文件)、fckstyles.xml(样式)、fcktemplates.xml(模板)文件和editor文件夹。
2、editor\lang目录:存放的是多语言配置文件,因为我们只可能用到en和zh-cn(简体中文)所以,根据我的选择,我删掉其他的语言配置文件。
3、editor\skins界面目录:默认带有三个界面(default:默认界面,加载速度相对较快;office2003:相对pp的界面,不过速度确实要慢些;silver:银白色界面,加载速度也相对较快),可以自行决定是否删除其中一两个。
4、editor\filemanager\browser\default\connectors目录:存放编辑器所支持的Web动态语言,我们以php为例所以保留php目录,test.html文件可以帮助你查看某语言下的上传设置等(具体上传设置我将在后面的配置作较为详细讲解),可以自行决定是否删除。
5、editor\filemanager\upload目录:同理。
到此精简完成,你会发现整个编辑器确实“瘦身”不少,呵呵
基本配置:
下面我开始对编辑器进行简单配置(并非每步都必须,可根据自己的需要参考修改):
1、默认语言
打开fckconfig.js文件(注意此文件是utf-8编码哦),找到FCKConfig.AutoDetectLanguage = true ;(第56行)此句作用为自动检测语言,默认为true,即表示编辑器会根据系统语言自动检测加载相应的语言,我们将其改为false,不让其检测,然后将FCKConfig.DefaultLanguage = 'en';(编辑器默认语言,第57行)改为简体中文"zh-cn"。
2、字体列表
依然打开fckconfig.js,因为此编辑器为外国人编写,所以默认不提供中文字体,我们为其加入,找到FCKConfig.FontNames(第142行)加入“宋体;楷体_GB2312;新宋体;黑体;隶书;幼圆;”其他字体可根据自己需要自行加入。
3、文件上传
FCKeditor的文件管理程序在editor/filemanager/文件夹下,分为浏览(browser)和上传(upload)两种。“浏览”是指浏览服务器已存在文件并可以选择,也可以上传本地文件至服务器;上传是指快速上传,在窗口中点“上传”选项,选择本地文件后上传就行,但是不能查看服务器上已有上传文件,相对而言不太方便,只是操作更为快捷。也就是说FCKeditor中有一个文件浏览,有两个文件上传,而这些设置是分散在多个文件中,配置相对复杂,下面我大致讲一下:
在FCKeditor中共有三个文件跟上传功能有关,一个是js文件,两个是php文件,前者关闭后界面中不出现相关窗口或按钮,后者关闭后相关功能不可用。
js文件即是指的fckconfig.js文件,在以前旧版本的fckconfig.js中首先你必需开启如下几项:
浏览上传功能:
CODE: [Copy to clipboard]
FCKConfig.LinkBrowser = true ; //文件
FCKConfig.ImageBrowser = true ; //图片
FCKConfig.FlashBrowser = true ; //Flash
快速上传功能:
CODE: [Copy to clipboard]
FCKConfig.LinkUpload = true ; //同上
FCKConfig.ImageUpload = true ; //同上
FCKConfig.FlashUpload = true ; //同上
即把这几项设为true,而我们今天使用的2.4.2的fckconfig.js中默认已经是开启上传开关显示功能的,所以,如果你要将该编辑器作为前台使用(fckeditor上传漏洞问题一直没有得到较好的改善),考虑到安全性你可能需要关闭文件上传功能,那么你只需要将这几项设置为false即可(当然两个php文件你也不要开启上传功能哦)。
如果你要使用文件上传功能,那么我们继续配置:
依然在fckconfig.js文件中,fckeditor对语言默认支持的是asp,找到以下两句,进行相应修改:
var _FileBrowserLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py(第182行)
var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | php(第183行)
我们将其均改为'php':
var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py(第182行)
var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | php
在2.4.2版本中,我们发现增加了对更多文件后缀名的支持,这个应该是为了解决上传漏洞所作的些许改动,不过作用不大,呵呵
*.AllowedExtensions:(其中*号代表:FCKConfig.LinkUpload、FCKConfig.ImageUpload等)表示允许上传的文件后缀名,为空表示允许所有文件,你可根据自己需要设置上传文件后缀名,一定程度增加安全性,设置的格式可以参考它已有的后缀名设置。
*.DeniedExtensions:同上,表示禁止上传的文件后缀名。
注:你设置了允许上传的,当然禁止的也就不必要设置了,本人推荐设置允许的,毕竟禁止的后缀名列表不能罗列完全,可能还有很多我们不曾想到的后缀名。
对js文件的配置到此已经完成,下面我们进行两个php文件在上传方面的设置:
文件浏览上传修改:
打开editor\filemanager\browser\default\connectors\php\config.php文件,找到:
$Config['Enabled'] = false ;(第28行)将false改为true,即允许上传。
$Config['UserFilesPath'] = '/userfiles/' ;(第32行)为定义上传目录,可根据自己情况进行修改,我将其改为upload目录。
注:注意FCKeditor是不支持虚拟目录的,你的所有路径都是针对网站根目录的绝对路径。
文件快速上传修改:
打开文件editor\filemanager\upload\php\config.php文件,找到
$Config['Enabled'] = false ;(第28行)将false改为true。
$Config['UserFilesPath'] = '/UserFiles/' ;(第35行)同“文件浏览上传”的上传目录。
$Config['UseFileType'] = false ; (第32行)改为true,不然上传文件不会放在上传目录中
在该文件中,还有一项:
$Config['UserFilesAbsolutePath'] = '' ;(第41行)
这项的作用是设定上传的绝对路径,比如,你想指定上传文件到D:/Web/upload/下,你可以指定它的值为你的绝对路径,注意,如果你指定了该值,那你也要对$Config['UserFilesPath'] = '/UserFiles/' ;作相同的设置。
到此上传基本配置已经完成,整个编辑器最基本的配置也已经结束了,你可以通过下列代码对其进行调用测试了:
CODE:
<?php
include("/fckeditor/fckeditor.php"); // 包含fckeditor类,fckeditor目录放在网站根目录下
$BasePath = "/fckeditor/"; // 编辑器路径
$oFCKeditor = new FCKeditor('jayliao'); // 创建一个fckeditor对象,表单的名称为jayliao
$oFCKeditor->BasePath = $BasePath;
$oFCKeditor->Value = 'test'; // 设置表单初始值
// 还可设置以下部分(“=”包含部分),并非必须:
//==================================================================================//
$oFCKeditor->Width = '100%'; // 编辑器宽度,类中有默认值,如果不想修改可不管此项
$oFCKeditor->Height= '300'; // 同width,此处为高$oFCKeditor->ToolbarSet
$oFCKeditor->ToolbarSet = 'JayLiao'; // 默认编辑器工具栏有Basic(基本工具)和Default(所有工具)两种选择,JayLiao为本人自定义的工具条,如有需要可参考后文中的说明新建或修改工具条
$oFCKeditor->Config['SkinPath'] = '/fckeditor/editor/skins/office2003/'; // 设置编辑器皮肤
//==================================================================================//
$oFCKeditor->Create(); // 调用类中方法,必须
?>
赶紧测试一下吧,是不是很激动,终于可以看到这个强大的编辑器了,呵呵。不过,马上你会发现在上传以中文命名的文件时会出现乱码,这到底是怎么回事呢?呵呵,不怕,下面我们就对其进行简单修改问题很快就解决的:
我们为上传文件以时间+随机数作为其新名字,打开:editor\filemanager\upload\php\upload.php,找到:
CODE:
<?php
$sFileName = $oFile['name'] ;
?>
替换为:
<?php
$sFileName = $oFile['name'] ;
$sOriginalFileName = $sFileName ;
$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ;
$sFileName = date("YmdHis").rand(100, 200).".".$sExtension;
?>
哈哈,你会发现“快速上传”的乱码已经解决,就这么简单,高兴之余不要忘了,同样,还需要修改“浏览”的上传,修改文件:editor\filemanager\browser\default\connectors\php\commands.php,修改内容同上。
另:你上传的中文文件不做以上命名修改可能在服务器上并非乱码,如果你只是为了在浏览的时候让编辑器正确显示该类文件名,那你可以作如下修改,打开:editor\filemanager\browser\default\connectors\php\util.php,修改ConvertToXmlAttribute函数,将:
return utf8_encode( htmlspecialchars( $value ) ) ;
修改为:
return iconv( "GBK", "UTF-8", htmlspecialchars($value) ) ;
//需要php的 iconv模块支持
这样,你的编辑器应该已经能正确显示中文名,不过强烈建议你修改上传文件的命名,中文名可能存在诸多不便。
当完成以上设置后,fckeditor已经能满足我们的日常使用需要,不过我们却又发现一个问题,那就是上传后的文件我们却无法删除,这样会使网站上的垃圾文件(主要是图片)日益增多,那我们是否能够通过对编辑器的修改能较为方便的管理删除无用上传文件呢?我们不难想到fckeditor的浏览文件功能,对该功能进行适当的扩展,对日常所上传的文件进行管理就变得相当简单易行了,那我们赶紧动手吧:
增加该功能我们修改的页面为:fckeditor\editor\filemanager\browser\default\frmresourceslist.html
第一步,在页面的body区域增加如下代码:
<div id="showFile" style="float:left; display:none; background-color:#999999"></div>
<iframe id="iframe_del" name="iframe_del" width="0" height="0" scrolling="no"></iframe>
<div id="body_content"></div>
说明:第一对<div></div>的作用是当我们把鼠标移动到所上传的文件上时显示其相关信息;<iframe></iframe>标签的作用是供我们删除上传文件时做动作响应窗口的,即是将我们的删除动作在iframe中运行,目的是实现伪无刷新删除效果;最后一对<div></div>的作用是显示上传文件及文件夹的列表(2.4较以前版本对<body></body>标签中内容作了调整,老版该页面以<table></table>作为存放列表的容器,而新版直接将显示容器在js中生成,为了使文件显示div和iframe两组标签正常使用,故在body标签中加入一对<div></div>标签,使之能正常使用,在我的尝试中,倘若不这样修改似乎有错,当然不排除我方法不当的原因,呵呵)
第二步,在文件的js代码区中加入:
CODE:
// add by jayliaoscu @ 2007-04-23 /*{{{{*/
// 显示文件显示层
function showDiv( fileUrl )
{
var name = fileUrl;
//获取文件类型
var suffix = name.substring(name.lastIndexOf(".")+1);
var div= document.getElementById("showFile");
div.content = "";
div.style.position = "absolute";
div.content += "<table width='256' border='0' cellpadding='3' cellspacing='1' bgcolor='#737357'><tbody><tr><td height='23' align='left' bgcolor='#C7C78F'><table width='100%' height='100%' border='0' cellpadding='0' cellspacing='0'><tbody><tr><td width='47%'> <a href='javascript:' onClick='hiddenDiv();'><font color='#000000' style='text-decoration:none;'>关闭</font></a></td><td width='53%' align='right'><a href='javascript:' onclick='delFile(\"" + fileUrl + "\");'><font color='#000000' style='text-decoration:none;'>删除</font></a> </td></tr></tbody></table></td></tr>";
if (suffix=='gif' || suffix=="jpg" || suffix=="jpeg" || suffix=="bmp" || suffix=="png")
{
div.content += "<tr><td align='center' bgcolor='#C7C78F'><img src='" + fileUrl + "' onload='if(this.width>250) this.width=250' style='margin:3px;'></td></tr>";
}
else
{
div.content += "<tr><td height='35' align='center' bgcolor='#C7C78F'><strong>该类型不能预览</strong></td></tr>";
}
div.content += "</tbody></table>";
div.innerHTML = div.content;
div.style.display = "";
div.style.top = event.y+document.body.scrollTop+10;
div.style.left = event.x+document.body.scrollLeft+30;
}
// 隐藏文件显示层
function hiddenDiv()
{
var div= document.getElementById("showFile");
div.style.display ="none";
}
// 在iframe中删除文件
function delFile( fileUrl )
{
if(!confirm('你确定删除该文件?'))
return;
var url = '/fckeditor/del_file.php?filePath='+ fileUrl;
window.open(url, "iframe_del");
Refresh();
}
///*}}}*/
第三步,修改本页面原有js
修改:
CODE:
oListManager.Clear = function()
{
document.body.innerHTML = '' ;
}
为:
CODE:
oListManager.Clear = function()
{
hiddenDiv();
document.getElementById("body_content").innerHTML = '' ; // body_content为我们在body区域增加的div标签
}
找到:
CODE:
var sLink = '<a href="#" onclick="OpenFile(\'' + fileUrl.replace( /'/g, '\\\'') + '\');return false;">' ;
修改为:
CODE:
var sLink = '<a href="#" onmouseover="showDiv(\'' + fileUrl + '\');" onclick="OpenFile(\'' + fileUrl.replace( /'/g, '\\\'') + '\');return false;">' ;
// 即是文件信息显示功能
修改:
CODE:
function Refresh()
{
LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
}
为:
CODE:
function Refresh()
{
hiddenDiv(); // 所作修改,为了刷新列表时默认隐藏文件显示层
LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;
}
修改函数:GetFoldersAndFilesCallBack,找到:
CODE:
document.body.innerHTML = oHtml.ToString() ;
修改为:
CODE:
document.getElementById("body_content").innerHTML = oHtml.ToString() ;
最后,增加一个文件删除页面del_file.php(该文件路径和增加的js函数delFile(fileUrl)中的调用一致),作用为删除文件,给出成功与否的操作提示,参考代码:
CODE:
<?php
$filePath = "..".trim($_GET['filePath']);
if ( $filePath )
{
@unlink($filePath);
echo "<script>alert('删除成功。');</script>";
}
else
{
echo "<script>alert('删除错误,可能文件不存在或者已经删除。');</script>";
}
?>
至此,我对于fckeditor的修改基本完成,当然这些修改只是对fckeditor修改使用的抛砖引玉,给大家一个参考,希望对初学者有所帮助。后面对编辑器的修改过程比较匆忙,并未修改一步完成一步文档书写,所以,难免有所出错,望见谅,如果你有什么问题和错误发现欢迎联系我互相讨论,共同进步,呵呵。
By jayliaoscu @ 2007-5-5
QQ: 41806572
Email: jayliaoscu@gmail.com
另附:
配置文件(fckconfig.js)中主要配置项目如下,根据自己看情况配置:
CODE:
FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称
FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件
FCKConfig.BaseHref = ''; // 相对链接的基地址
FCKConfig.Debug = true/false; // 是否开启调试功能,当调用FCKDebug.Output()时,会在调试窗中输出内容
FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/'; // 设置皮肤
FCKConfig.AutoDetectLanguage = true/false ; // 是否自动检测语言
FCKConfig.DefaultLanguage = 'zh-cn' ; // 设置默认语言
FCKConfig.ContentLangDirection = 'ltr/rtr'; // 默认文字方向,ltr左,rtr右
FCKConfig.FillEmptyBlocks = true/false ; // 使用这个功能,可以将空的块级元素用空格来替代
FCKConfig.FormatSource = true/false; // 切换到代码视图时,是否自动格式化代码
FCKConfig.FormatOutput = true/false; // 当输出内容时是否自动格式化代码
FCKConfig.FormatIndentator = ""; // 当在“源码格式”下缩进代码使用的字符
FCKConfig.GeckoUseSPAN = true/false; // 是否允许SPAN标记代替B,I,U标记
FCKConfig.StartupFocus = true/false; // 开启时是否FOCUS到编辑器
FCKConfig.ForcePasteAsPlainText = true/false;// 强制粘贴为纯文本
FCKConfig.ForceSimpleAmpersand = true/false; // 是否不把&符号转换为XML实体
FCKConfig.TabSpaces = 0/1; // TAB是否有效
FCKConfig.TabSpaces = 4; // TAB键产生的空格字符数
FCKConfig.ShowBorders = true/false; // 是否合并边框
FCKConfig.ToolbarStartExpanded = true/false; // 页面载入时,工具栏是否展开,点“展开工具栏”时才出现
FCKConfig.ToolBarCanCollapse = true/false; // 是否允许展开折叠工具栏
FCKConfig.ToolbarSets = object ; // 编辑器的工具栏,可以自行定义,删减,可参考已存在工具栏
FCKConfig.EnterMode = 'p'; // 编辑器中直接回车,在代码中生成,可选为p | div | br
FCKConfig.ShiftEnterMode = 'br'; // 编辑器中Shift+回车,在代码中生成,可选为p | div | br
FCKConfig.ContextMenu = 字符串数组; // 右键菜单的内容
FCKConfig.FontColors = ""; // 文字颜色列表
FCKConfig.FontNames = ""; // 字体列表
FCKConfig.FontSizes = ""; // 字号列表
FCKConfig.FontFormats = ""; // 文字格式列表
FCKConfig.StylesXmlPath = ""; // CSS样式列表的XML文件的位置
FCKConfig.TemplatesXmlPath = ""; // 模版的XML文件位置
FCKConfig.SpellChecker = "ieSpell/Spellerpages"; // 拼写检查器
FCKConfig.IeSpellDownloadUrl = ""; // 下载拼写检查器的网址
FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/'; // 表情文件存放路径
FCKConfig.SmileyImages = ''; // 表情文件名称列表,具体参考默认设置
FCKConfig.SmileyColumns = 8; // 表情窗口显示表情列数
FCKConfig.SmileyWindowWidth = 320; // 表情窗口显示宽度,此窗口会因为表情文件的改变而作调整
FCKConfig.SmileyWindowHeight = 240; // 表情窗口显示高度,此窗口会因为表情文件的改变而作调整
FCKConfig.FullPage = true/false; // 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容
Tags: 编辑
php学习 | 评论:0
| Trackbacks:0
| 阅读:2214
Submitted by jiashixiang on 2008, July 25, 1:50 PM
<iframe>是框架的一种形式,也比较常用到。
例子1。
<iframe width=420 height=330 frameborder=0 scrolling=auto src=URL></iframe>
不用多说了。
width插入页的宽;height插入页的高;scrolling 是否显示页面滚动条(可选的参数为 auto、yes、no,如果省略这个参数,则默认为auto);frameborder 边框大小;
注意:URL建议用绝对路径
<iframe width=0 height=0 frameborder=0 scrolling=auto src=http://www.zhangtao.org.cn></iframe>
例子2。
如果一个页面里面有框架。。随便点页面里的连接,要求在这个<iframe> 里打开。在iframe 中加入name=** (**自己设定)
<iframe name=** ></iframe>
然后在修改默认打开模式,:网页HEAD中加上<a href=URL target=**>或部分连接的目标框架设为(**)
例子3。
要插入一个页面。要求只拿中间一部分。其他的都不要。,。。
代码:
<iframe name=123 align=middle marginwidth=0 marginheight=0 vspace=-170 hspace=0 src="www.zhangtao.org.cn" frameborder=no scrolling=no width=776 height=2500></iframe>
控制插入页被框架覆盖的深度 marginwidth=0 marginheight=0;控制框架覆盖上部分的深度 vspace=-170
scrolling滚动条要否(auto、yes、no) frameborder框架的边框大小,width=776 height=2500此框架的大小。
一、页面内加入iframe
<iframe width=420 height=330 frameborder=0 scrolling=auto src=URL></iframe>,
scrolling表示是否显示页面滚动条,可选的参数为auto、yes、no,如果省略这个参数,则默认为auto。
二、超链接指向这个嵌入的网页,只要给这个iframe命名就可以了。方法是<iframe name=**>,例如我命名为aa,写入这句HTML语言<iframe width=420 height=330 name=aa frameborder=0 src=http://www.cctv.com></iframe>,然后,网页上的超链接语句应该写为:<a href=URL target=aa>
三、如果把frameborder设为1,效果就像文本框一样
透明的IFRAME的用法
必需IE5.5以上版本才支持
在transparentBody.htm文件的<body>标签中,我已经加入了style="background-color=transparent" (即出现<body style='background:transparent'>然后正常调用就可以了) 通过以下四种IFRAME的写法我想大概你对iframe背景透明效果的实现方法应该会有个清晰的了解:
<IFRAME ID="Frame1" SRC="transparentBody.htm" allowTransparency="true"></IFRAME>
<IFRAME ID="Frame2" SRC="transparentBody.htm" allowTransparency="true" STYLE="background-color: green"> </IFRAME>
<IFRAME ID="Frame3" SRC="transparentBody.htm"></IFRAME>
<IFRAME ID="Frame4" SRC="transparentBody.htm" STYLE="background-color: green"> </IFRAME>
iframe网页背景变成透明的办法-可以把iframe中的网页的背景设置为透明
1、a.htm
<iframe src="b.htm" allowtransparency="true"></iframe>
2、b.htm
<BODY STYLE="background-color:transparent">
CSS样式表里面的阿尔法通道
在</head>之前一行插入
<style type=\"text/css\">
.tabbg{filter:alpha(opacity=透明度);}
</style>
透明度数值1~100之间
然后有背景的表格<table ....>添加<table ..... class=tabbg>即可,注意这个做法是整个表格包括文字也有想同透明度,如果只是要背景图片透明则需要将表格和图片放到不同层里面互不干扰才行。
Tags: ifram
成长 | 评论:0
| Trackbacks:0
| 阅读:2580
Submitted by jiashixiang on 2008, July 25, 1:49 PM
具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)
矩形、椭圆选框工具 【M】
裁剪工具 【C】
移动工具 【V】
套索、多边形套索、磁性套索 【L】
魔棒工具 【W】
喷枪工具 【J】
画笔工具 【B】
像皮图章、图案图章 【S】
历史记录画笔工具 【Y】
像皮擦工具 【E】
铅笔、直线工具 【N】
模糊、锐化、涂抹工具 【R】
减淡、加深、海棉工具 【O】
钢笔、自由钢笔、磁性钢笔 【P】
添加锚点工具 【+】
删除锚点工具 【-】
直接选取工具 【A】
文字、文字蒙板、直排文字、直排文字蒙板 【T】
度量工具 【U】
直线渐变、径向渐变、对称渐变、角度渐变、菱形渐变 【G】
油漆桶工具 【K】
吸管、颜色取样器 【I】
抓手工具 【H】
缩放工具 【Z】
默认前景色和背景色 【D】
切换前景色和背景色 【X】
切换标准模式和快速蒙板模式 【Q】
标准屏幕模式、带有菜单栏的全屏模式、全屏模式 【F】
临时使用移动工具 【Ctrl】
临时使用吸色工具 【Alt】
临时使用抓手工具 【空格】
打开工具选项面板 【Enter】
快速输入工具选项(当前工具选项面板中至少有一个可调节数字) 【0】至【9】
循环选择画笔 【[】或【]】
选择第一个画笔 【Shift】+【[】
选择最后一个画笔 【Shift】+【]】
建立新渐变(在”渐变编辑器”中) 【Ctrl】+【N】
文件操作
新建图形文件 【Ctrl】+【N】
用默认设置创建新文件 【Ctrl】+【Alt】+【N】
打开已有的图像 【Ctrl】+【O】
打开为... 【Ctrl】+【Alt】+【O】
关闭当前图像 【Ctrl】+【W】
保存当前图像 【Ctrl】+【S】
另存为... 【Ctrl】+【Shift】+【S】
存储副本 【Ctrl】+【Alt】+【S】
页面设置 【Ctrl】+【Shift】+【P】
打印 【Ctrl】+【P】
打开“预置”对话框 【Ctrl】+【K】
显示最后一次显示的“预置”对话框 【Alt】+【Ctrl】+【K】
设置“常规”选项(在预置对话框中) 【Ctrl】+【1】
设置“存储文件”(在预置对话框中) 【Ctrl】+【2】
设置“显示和光标”(在预置对话框中) 【Ctrl】+【3】
设置“透明区域与色域”(在预置对话框中) 【Ctrl】+【4】
设置“单位与标尺”(在预置对话框中) 【Ctrl】+【5】
设置“参考线与网格”(在预置对话框中) 【Ctrl】+【6】
设置“增效工具与暂存盘”(在预置对话框中) 【Ctrl】+【7】
设置“内存与图像高速缓存”(在预置对话框中) 【Ctrl】+【8】
编辑操作
还原/重做前一步操作 【Ctrl】+【Z】
还原两步以上操作 【Ctrl】+【Alt】+【Z】
重做两步以上操作 【Ctrl】+【Shift】+【Z】
剪切选取的图像或路径 【Ctrl】+【X】或【F2】
拷贝选取的图像或路径 【Ctrl】+【C】
合并拷贝 【Ctrl】+【Shift】+【C】
将剪贴板的内容粘到当前图形中 【Ctrl】+【V】或【F4】
将剪贴板的内容粘到选框中 【Ctrl】+【Shift】+【V】
自由变换 【Ctrl】+【T】
应用自由变换(在自由变换模式下) 【Enter】
从中心或对称点开始变换 (在自由变换模式下) 【Alt】
限制(在自由变换模式下) 【Shift】
扭曲(在自由变换模式下) 【Ctrl】
取消变形(在自由变换模式下) 【Esc】
自由变换复制的象素数据 【Ctrl】+【Shift】+【T】
再次变换复制的象素数据并建立一个副本 【Ctrl】+【Shift】+【Alt】+【T】
删除选框中的图案或选取的路径 【DEL】
用背景色填充所选区域或整个图层 【Ctrl】+【BackSpace】或【Ctrl】+【Del】
用前景色填充所选区域或整个图层 【Alt】+【BackSpace】或【Alt】+【Del】
弹出“填充”对话框 【Shift】+【BackSpace】
从历史记录中填充 【Alt】+【Ctrl】+【Backspace】
图像调整
调整色阶 【Ctrl】+【L】
自动调整色阶 【Ctrl】+【Shift】+【L】
打开曲线调整对话框 【Ctrl】+【M】
在所选通道的曲线上添加新的点(‘曲线’对话框中) 在图象中【Ctrl】加点按
在复合曲线以外的所有曲线上添加新的点(‘曲线’对话框中) 【Ctrl】+【Shift】
加点按
移动所选点(‘曲线’对话框中) 【↑】/【↓】/【←】/【→】
以10点为增幅移动所选点以10点为增幅(‘曲线’对话框中) 【Shift】+【箭头】
选择多个控制点(‘曲线’对话框中) 【Shift】加点按
前移控制点(‘曲线’对话框中) 【Ctrl】+【Tab】
后移控制点(‘曲线’对话框中) 【Ctrl】+【Shift】+【Tab】
添加新的点(‘曲线’对话框中) 点按网格
删除点(‘曲线’对话框中) 【Ctrl】加点按点
取消选择所选通道上的所有点(‘曲线’对话框中) 【Ctrl】+【D】
使曲线网格更精细或更粗糙(‘曲线’对话框中) 【Alt】加点按网格
选择彩色通道(‘曲线’对话框中) 【Ctrl】+【~】
选择单色通道(‘曲线’对话框中) 【Ctrl】+【数字】
打开“色彩平衡”对话框 【Ctrl】+【B】
打开“色相/饱和度”对话框 【Ctrl】+【U】
全图调整(在色相/饱和度”对话框中) 【Ctrl】+【~】
只调整红色(在色相/饱和度”对话框中) 【Ctrl】+【1】
只调整黄色(在色相/饱和度”对话框中) 【Ctrl】+【2】
只调整绿色(在色相/饱和度”对话框中) 【Ctrl】+【3】
只调整青色(在色相/饱和度”对话框中) 【Ctrl】+【4】
只调整蓝色(在色相/饱和度”对话框中) 【Ctrl】+【5】
只调整洋红(在色相/饱和度”对话框中) 【Ctrl】+【6】
去色 【Ctrl】+【Shift】+【U】
反相 【Ctrl】+【I】
图层操作
从对话框新建一个图层 【Ctrl】+【Shift】+【N】
以默认选项建立一个新的图层 【Ctrl】+【Alt】+【Shift】+【N】
通过拷贝建立一个图层 【Ctrl】+【J】
通过剪切建立一个图层 【Ctrl】+【Shift】+【J】
与前一图层编组 【Ctrl】+【G】
取消编组 【Ctrl】+【Shift】+【G】
向下合并或合并联接图层 【Ctrl】+【E】
合并可见图层 【Ctrl】+【Shift】+【E】
盖印或盖印联接图层 【Ctrl】+【Alt】+【E】
盖印可见图层 【Ctrl】+【Alt】+【Shift】+【E】
将当前层下移一层 【Ctrl】+【[】
将当前层上移一层 【Ctrl】+【]】
将当前层移到最下面 【Ctrl】+【Shift】+【[】
将当前层移到最上面 【Ctrl】+【Shift】+【]】
激活下一个图层 【Alt】+【[】
激活上一个图层 【Alt】+【]】
激活底部图层 【Shift】+【Alt】+【[】
激活顶部图层 【Shift】+【Alt】+【]】
调整当前图层的透明度(当前工具为无数字参数的,如移动工具) 【0】至【9】
保留当前图层的透明区域(开关) 【/】
投影效果(在”效果”对话框中) 【Ctrl】+【1】
内阴影效果(在”效果”对话框中) 【Ctrl】+【2】
外发光效果(在”效果”对话框中) 【Ctrl】+【3】
内发光效果(在”效果”对话框中) 【Ctrl】+【4】
斜面和浮雕效果(在”效果”对话框中) 【Ctrl】+【5】
应用当前所选效果并使参数可调(在”效果”对话框中) 【A】
图层混合模式
循环选择混合模式 【Alt】+【-】或【+】
正常 【Ctrl】+【Alt】+【N】
阈值(位图模式) 【Ctrl】+【Alt】+【L】
溶解 【Ctrl】+【Alt】+【I】
背后 【Ctrl】+【Alt】+【Q】
清除 【Ctrl】+【Alt】+【R】
正片叠底 【Ctrl】+【Alt】+【M】
屏幕 【Ctrl】+【Alt】+【S】
叠加 【Ctrl】+【Alt】+【O】
柔光 【Ctrl】+【Alt】+【F】
强光 【Ctrl】+【Alt】+【H】
颜色减淡 【Ctrl】+【Alt】+【D】
颜色加深 【Ctrl】+【Alt】+【B】
变暗 【Ctrl】+【Alt】+【K】
变亮 【Ctrl】+【Alt】+【G】
差值 【Ctrl】+【Alt】+【E】
排除 【Ctrl】+【Alt】+【X】
色相 【Ctrl】+【Alt】+【U】
饱和度 【Ctrl】+【Alt】+【T】
颜色 【Ctrl】+【Alt】+【C】
光度 【Ctrl】+【Alt】+【Y】
去色 海棉工具+【Ctrl】+【Alt】+【J】
加色 海棉工具+【Ctrl】+【Alt】+【A】
暗调 减淡/加深工具+【Ctrl】+【Alt】+【W】
中间调 减淡/加深工具+【Ctrl】+【Alt】+【V】
高光 减淡/加深工具+【Ctrl】+【Alt】+【Z】
选择功能
全部选取 【Ctrl】+【A】
取消选择 【Ctrl】+【D】
重新选择 【Ctrl】+【Shift】+【D】
羽化选择 【Ctrl】+【Alt】+【D】
反向选择 【Ctrl】+【Shift】+【I】
路径变选区 数字键盘的【Enter】
载入选区 【Ctrl】+点按图层、路径、通道面板中的缩约图
滤镜
按上次的参数再做一次上次的滤镜 【Ctrl】+【F】
退去上次所做滤镜的效果 【Ctrl】+【Shift】+【F】
重复上次所做的滤镜(可调参数) 【Ctrl】+【Alt】+【F】
选择工具(在“3D变化”滤镜中) 【V】
立方体工具(在“3D变化”滤镜中) 【M】
球体工具(在“3D变化”滤镜中) 【N】
柱体工具(在“3D变化”滤镜中) 【C】
轨迹球(在“3D变化”滤镜中) 【R】
全景相机工具(在“3D变化”滤镜中) 【E】
视图操作
显示彩色通道 【Ctrl】+【~】
显示单色通道 【Ctrl】+【数字】
显示复合通道 【~】
以CMYK方式预览(开关) 【Ctrl】+【Y】
打开/关闭色域警告 【Ctrl】+【Shift】+【Y】
放大视图 【Ctrl】+【+】
缩小视图 【Ctrl】+【-】
满画布显示 【Ctrl】+【0】
实际象素显示 【Ctrl】+【Alt】+【0】
向上卷动一屏 【PageUp】
向下卷动一屏 【PageDown】
向左卷动一屏 【Ctrl】+【PageUp】
向右卷动一屏 【Ctrl】+【PageDown】
向上卷动10 个单位 【Shift】+【PageUp】
向下卷动10 个单位 【Shift】+【PageDown】
向左卷动10 个单位 【Shift】+【Ctrl】+【PageUp】
向右卷动10 个单位 【Shift】+【Ctrl】+【PageDown】
将视图移到左上角 【Home】
将视图移到右下角 【End】
显示/隐藏选择区域 【Ctrl】+【H】
显示/隐藏路径 【Ctrl】+【Shift】+【H】
显示/隐藏标尺 【Ctrl】+【R】
显示/隐藏参考线 【Ctrl】+【;】
显示/隐藏网格 【Ctrl】+【”】
贴紧参考线 【Ctrl】+【Shift】+【;】
锁定参考线 【Ctrl】+【Alt】+【;】
贴紧网格 【Ctrl】+【Shift】+【”】
显示/隐藏“画笔”面板 【F5】
显示/隐藏“颜色”面板 【F6】
显示/隐藏“图层”面板 【F7】
显示/隐藏“信息”面板 【F8】
显示/隐藏“动作”面板 【F9】
显示/隐藏所有命令面板 【TAB】
显示或隐藏工具箱以外的所有调板 【Shift】+【TAB】
文字处理(在”文字工具”对话框中)
左对齐或顶对齐 【Ctrl】+【Shift】+【L】
中对齐 【Ctrl】+【Shift】+【C】
右对齐或底对齐 【Ctrl】+【Shift】+【R】
左/右选择 1 个字符 【Shift】+【←】/【→】
下/上选择 1 行 【Shift】+【↑】/【↓】
选择所有字符 【Ctrl】+【A】
选择从插入点到鼠标点按点的字符 【Shift】加点按
左/右移动 1 个字符 【←】/【→】
下/上移动 1 行 【↑】/【↓】
左/右移动1个字 【Ctrl】+【←】/【→】
将所选文本的文字大小减小2 点象素 【Ctrl】+【Shift】+【<】
将所选文本的文字大小增大2 点象素 【Ctrl】+【Shift】+【>】
将所选文本的文字大小减小10 点象素 【Ctrl】+【Alt】+【Shift】+【<】
将所选文本的文字大小增大10 点象素 【Ctrl】+【Alt】+【Shift】+【>】
将行距减小2点象素 【Alt】+【↓】
将行距增大2点象素 【Alt】+【↑】
将基线位移减小2点象素 【Shift】+【Alt】+【↓】
将基线位移增加2点象素 【Shift】+【Alt】+【↑】
将字距微调或字距调整减小20/1000ems 【Alt】+【←】
将字距微调或字距调整增加20/1000ems 【Alt】+【→】
将字距微调或字距调整减小100/1000ems 【Ctrl】+【Alt】+【←】
将字距微调或字距调整增加100/1000ems 【Ctrl】+【Alt】+【→】
————————————————————————————————
以下号称“未公开的PHOTOSHOP快捷键”
◆ 双击面板=Open file
ctrl+双击面板=New file
shift+双击面板=Save
alt+双击面板=Open as
ctrl+shift+=Save as
ctrl+alt+o=实际像素显示
ctrl+h=隐藏选定区域
ctrl+d=取消选定区域
ctrl+w=关闭文件
ctrl+q=退出photoshop
▲ f=标准显示模式→带菜单的全屏显示模式→全屏显示模式
★ 按Tab键可以显示或隐藏工具箱和调色板,按“Shift+Tab"键可以显示或隐藏除工具箱外的其它调色板。
★ esc=取消操作
★ 可以通过按键盘上的某一字母键来快速选择某一工具,各个工具的字母快捷键如下:Mar-quee-M, Lasso-l, Airbrush-a, Eraser-E, Rubber Stamp-S, Focus-R, Path-P, Line-N, Paint Bucket-K, Hand-H, Move-V, Magic Wand-W, Paintbrush-B, Pencil-Y, Smudge-U, Toning-O, Type-T, Gradient-G, Eyedropper-I, Zoom-Z, Default Colors-D, Switch Colors-X, Standard Mode-Q, Quick Mask Mode-Q,
秘技2:Shift,Ctr,Alt联袂主演!
使用其它工具时,按住Ctrl键可切换到Move工具的功能(除了选择Hand工具时);按住空格键可切换到Hand工具的功能。
使用其它工具时,按“Ctrl+空格键”可切换到Zoom In工具放大图像显示比例:按“Alt+Ctrl+空格键”可切换到Zoom Out工具缩小图像显示比例。
按“Ctrl+[+]"键可使图像文件持续放大显示比例,但窗口不随之放大;按“Ctrl+[-]”键可使图像文件持续缩小显示比例,但窗口不随之缩小。
按“Ctrl+Alt+[+]”键可使图像文件持续放大显示比例,且窗口随之放大;按“Ctrl+Alt+[-]”键可使图像文件持续缩小显示比例,且窗口随之缩小。
在Hand工具上双击鼠标可以使图像匹配窗口的大小显示。
按“Ctrl+Alt+[数字键0]”或在Zoom工具上双击鼠标可使图像文件以1:1比例显示。
按“Shift+Backspace”键可直接调用Fill(填充)对话框。
按“Alt+Backspace(delete)”键可将前景色填入选取框,按“Ctrl+Backspace(delete)”键可将背景色填入选取框内
在Layers、Channels、Paths调色板上,按Alt单击这些调色板底部的工具图标时,对于有对话框的工具可调出相应的对话框来更改设置。
移动图层和选取框时,按住Shift键可做水平、垂直或45度角的移动,按键盘上的方向键可做每次lpixel的移动,按住Shift 键再按键盘上的方向键可做每次10pixel的移动。
在使用选取工具时,按Shift键拖动鼠标可以在原选取框外增加选取范围(开集);按Alt键拖动鼠标可以删除与原选取框重叠部分的选取范围;同时按Shift与Alt键拖动鼠标可以选取与原选取框重叠的范围(交集)。
调用Curves对话框时,按住Alt键于格线内单击鼠标可以增加网格线,提高曲线精度。
更改某一对话框的设置后,若要恢复为默认值,只要按住Alt键,Cancel键会变成Reset键,在Reset键上单击即可。
若要将某一图层上的图像拷贝到尺寸不同的图像窗口中央位置时,可以在拖动鼠标的同时按住Shift键,图像拖动到目的窗口后会自动居中。
若要将图像用于网络传输,可将图像模式设置为Indexed Color索引色彩色模式,有文件小、传输快的优点,如果再选择GIF89a Export(GIF输出),可以设置透明的效果,并将文件保存成GIF格式。
在使用自由变形(Layer/Free Transform)功能时,按Ctrl键并拖动某一控制点可以进行随意变形的调整;“Shift+Ctrl”键并拖动某一控制点可以进行倾斜调整;按Alt键并拖动某一控制点可以进行对称调整;按“Shift+Ctrl+Alt”键并拖动某一控制点可以进行透视效果的调整。
在layers调色板上,按住Ctrl用鼠标单击某一图层时,可载入该层图像成选取框(Background层除外,改名后可以)。
使用路径(Path)工具时的几个技巧:使用笔形(Pen)工具制作路径时按住Shift键可以强制路径或方向线成水平、垂直或45度角,按住Ctrl键可暂时切换到路径选取工具,按住Alt键将笔形光标在在黑色节点上单击可以改变方向线的方向,使曲线能够转折;按Alt键用路径选取(Direct Selection)工具单击路径会选取整个路径;要同时选取多个路径可以按住Shift后逐个单击;使用路径选工具时按住“Ctrl+Alt”键移近路径会切换到加节点与减节点笔形工具。
若要切换路径(path)是否显示,可以按住Shift键后在路径调色板的路径栏上单击鼠标, 或者在路径调色版灰色区域单击即可.
若要一起执行数个宏(Action),可以先增加一个宏,然后录制每一个所要执行的宏。
若要在一个宏(Action)中的某一命令后新增一条命令,可以先选中该命令,然后单击调色板上的开始录制(Begin recording)图标,选择要增加的命令,再单击停止录制(Stop recording)图标即可。
在使用Filter/Render/Clouds滤镜时,若要产生更多明显的支纹图案,可先按住Alt键后再执行该命令;若要生成低漫射支彩效果,可先按住Shift键后再执行命令。
在使用Filter/Render/Lighting Effects滤镜时,若要在对话框内复制光源时,可先按住Alt键后再拖动光源即可实现复制。
若要在Color调色板上直接切换色彩模式,可先按住Shift键后,再将光标移到色彩条上单击即可
Tags: photoshop
成长 | 评论:0
| Trackbacks:0
| 阅读:1716
Submitted by jiashixiang on 2008, July 11, 9:34 AM
正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率。
EditPlus的查找,替换,文件中查找支持以下的正则表达式:
表达式 说明
\t 制表符.
\n 新行.
. 匹配任意字符.
| 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc".
[] 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意数字.
[^] 匹配列表之外的任何单个字符. 例如, "[^ab]" 匹配 "a" 和 "b" 以外的字符. "[^0-9]" 匹配任意非数字字符.
* 其左边的字符被匹配任意次(0次,或者多次). 例如 "be*" 匹配 "b", "be" 或者 "bee".
+ 其左边的字符被匹配至少一次(1次,或者多次). 例如 "be+" 匹配 "be" 或者 "bee" 但是不匹配 "b".
? 其左边的字符被匹配0次或者1次. 例如 "be?" 匹配 "b" 或者 "be" 但是不匹配 "bee".
^ 其右边的表达式被匹配在一行的开始. 例如 "^A" 仅仅匹配以 "A" 开头的行.
$Content$nbsp;其左边的表达式被匹配在一行的结尾. 例如 "e$" 仅仅匹配以 "e" 结尾的行.
() 影响表达式匹配的顺序,并且用作表达式的分组标记.
\ 转义字符. 如果你要使用 "\" 本身, 则应该使用 "\\".
例子:
原始串
str[1]abc[991];
str[2]abc[992];
str[11]abc[993];
str[22]abc[994];
str[111]abc[995];
str[222]abc[996];
str[1111]abc[997];
str[2222]abc[999];
目标串:
abc[1];
abc[2];
abc[11];
abc[22];
abc[111];
abc[222];
abc[1111];
abc[2222];
处理:
查找串:str\[([0-9]+)\]abc\[[0-9]+\]
替换串:abc[\1]
【1】正则表达式应用——替换指定内容到行尾
原始文本如下面两行
abc aaaaa
123 abc 444
希望每次遇到“abc”,则替换“abc”以及其后到行尾的内容为“abc efg”
即上面的文本最终替换为:
abc efg
123 abc efg
解决:
① 在替换对话框,查找内容里输入“abc.*”
② 同时勾选“正则表达式”复选框,然后点击“全部替换”按钮
其中,符号的含义如下:
“.” =匹配任意字符
“*” =匹配0次或更多
注意:其实就是正则表达式替换,这里只是把一些曾经提出的问题加以整理,单纯从正则表达式本身来说,就可以引申出成千上万种特例。
【2】正则表达式应用——数字替换
希望把
asdadas123asdasdas456asdasdasd789asdasd
替换为:
asdadas[123]asdasdas[456]asdasdasd[789]asdasd
在替换对话框里面,勾选“正则表达式”复选框;
在查找内容里面输入“[0-9][0-9][0-9]”,不含引号
“替换为:”里面输入“[\0\1\2]”,不含引号
范围为你所操作的范围,然后选择替换即可。
实际上这也是正则表达式的使用特例,“[0-9]”表示匹配0~9之间的任何特例,同样“[a-z]”就表示匹配a~z之间的任何特例
上面重复使用了“[0-9]”,表示连续出现的三个数字
“\0”代表第一个“[0-9]”对应的原型,“\1”代表第二个“[0-9]”对应的原型,依此类推
“[”、“]”为单纯的字符,表示添加“[”或“]”,如果输入“其它\0\1\2其它”,则替换结果为:
asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd
功能增强(by jiuk2k):
如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1 或 123 或 12345 或 …
大家根据需要定制
相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下
【3】正则表达式应用——删除每一行行尾的指定字符
因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现
比如
12345 1265345
2345
需要删除每行末尾的“345”
这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下
解决:
在替换对话框中,启用“正则表达式”复选框
在查找内容里面输入“345$”
这里“$”表示从行尾匹配
如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串
a. 选择要操作的行
b. 编辑-格式-删除行注释
c. 在弹出对话框里面输入要清除的行首字符,确定
【4】正则表达式应用——替换带有半角括号的多行
几百个网页中都有下面一段代码:
\n
在替换对话框启用“正则表达式”选项,这时就可以完成替换了
【5】正则表达式应用——删除空行
启动EditPlus,打开待处理的文本类型文件。
①、选择“查找”菜单的“替换”命令,弹出文本替换对话框。选中“正则表达式”复选框,表明我们要在查找、替换中使用正则表达式。然后,选中“替换范围”中的“当前文件”,表明对当前文件操作。
②、单击“查找内容”组合框右侧的按钮,出现下拉菜单。
③、下面的操作添加正则表达式,该表达式代表待查找的空行。(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。
直接在”查找”中输入正则表达式“^[ \t]*\n”,注意\t前有空格符。
(1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现在文本中一行的行首。
(2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。
(3)按一下空格键,添加空格符。空格符是空行的一个组成成分。
(4)选择“制表符”,添加代表制表符的“\t”。
(5)移动光标,将当前插入点移到“]”之后,然后选择“匹配 0 次或更多”,该操作会添加星号字符“*”。星号表示,其前面的括号“[]”内的空格符或制表符,在一行中出现0个或多个。
(6)选择“换行符”,插入“\n”,表示回车符。
④、“替换为”组合框保持空,表示删除查找到的内容。单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。
1.在汉化的时候,是否经常碰到这样的语句需要翻译:
Code:
“Error adding the post!”;
“Error adding the comment!”;
“Error adding the user!”;
如果有很多类似的文件一个一个翻译显然很累而且感觉很无聊。
其实可以这样处理,在Editplus里面用 替换 功能,在替换对话框选中“正则表达式”复选框:
查找原文件:
Code:
“Error adding ([^!|"|;]*)
替换成:
Code:
“在增加\1时发生错误
这样替换之后发生了什么?结果是:
Code:
“在增加the post时发生错误!”;
“在增加the comment时发生错误!”;
“在增加the user时发生错误!”;
ok,接下来你会怎么做?当然再替换一次把the post、the comment、the user替换成你要翻译的词。得到最后的结果:
Code:
“在增加帖子时发生错误!”;
“在增加评论时发生错误!”;
“在增加用户时发生错误!”;
2.要提取的单词在中间,比如:
Code:
can not be deleted because
can not be added because
can not be updating because
可以用这种方式:
在Editplus里面用 替换 功能,在替换对话框选中“正则表达式”复选框:
查找原文件:
Code:
can not be ([^ ]*) because
替换成:
Code:
无法被\1因为
这样替换之后发生了什么?结果是:
Code:
无法被deleted因为
无法被added因为
无法被updating因为
其余步骤如上。
在汉化量很大而且句式比较单调的情况下对效率的提高很明显!
解释一下:([^!|"|;]*) 的意思是 不等于 ! 和 ” 和 ; 中的任何一个,意思就是这3个字符之外的所有字符将被选中(替换区域);
\1 即被选中的替换区域所在的新位置(复制到这个新位置)。
3.经常手工清理一行一行地删除文本文件里面的空白行,其实可以交给Editplus更好的完成,在Editplus里面用替换功能,在替换对话框选中“正则表达式”复选框:
查找原文件:
Code:
^[ \t]*\n
替换部分为空就可以删除空白行了,执行一下看看:)
abandon[2’b9nd2n]v.抛弃,放弃
abandonment[2’b9nd2nm2nt]n.放弃
abbreviation[2bri:vi’ei62n]n.缩写
abeyance[2’bei2ns]n.缓办,中止
abide[2’baid]v.遵守
ability[2’biliti]n.能力
able[’eibl]adj.有能力的,能干的
abnormal[9b’n0:m2l]adj.反常的,变态的
aboard[2’b0:d]adv.船(车)上
1.
查找: (^[a-zA-Z0-0\-]+)(\[*.*\]+)(.*)
替换: @@@@@”\1″,”\2″,”\3″,
效果:
@@@@@”abandon”,”[2’b9nd2n]“,”v.抛弃,放弃”,
@@@@@”abandonment”,”[2’b9nd2nm2nt]“,”n.放弃”,
@@@@@”abbreviation”,”[2bri:vi’ei62n]“,”n.缩写”,
@@@@@”abeyance”,”[2’bei2ns]“,”n.缓办,中止”,
@@@@@”abide”,”[2’baid]“,”v.遵守”,
@@@@@”ability”,”[2’biliti]“,”n.能力”,
@@@@@”able”,”[’eibl]“,”adj.有能力的,能干的”,
@@@@@”abnormal”,”[9b’n0:m2l]“,”adj.反常的,变态的”,
@@@@@”aboard”,”[2’b0:d]“,”adv.船(车)上”,
2.
查找: \n
替换:
注: 要次替换内容为空
效果:
@@@@@”abandon”,”[2’b9nd2n]“,”v.抛弃,放弃 ”,@@@@@”abandonment”,”[2’b9nd2nm2nt]“,”n.放弃 ”,@@@@@”abbreviation”,”[2bri:vi’ei62n]“,”n.缩写 ”,@@@@@”abeyance”,”[2’bei2ns]“,”n.缓办,中止”,@@@@@”abide”,”[2’baid]“,”v.遵守 ”,@@@@@”ability”,”[2’biliti]“,”n.能力”,@@@@@”able”,”[’eibl]“,”adj.有能力的,能干的 ”,@@@@@”abnormal”,”[9b’n0:m2l]“,”adj.反常的,变态的 ”,@@@@@”aboard”,”[2’b0:d]“,”adv.船(车)上”,@@@@@”abolish”,”[2’b0li6]“,”v.废除,取消”,@@@@@”abolition”,”[9b2’li62n]“,”n.废除,取消”
3.
查找: @@@@@
替换: \n
效果:
“abandon”,”[2’b9nd2n]“,”v.抛弃,放弃”,
“abandonment”,”[2’b9nd2nm2nt]“,”n.放弃”,
“abbreviation”,”[2bri:vi’ei62n]“,”n.缩写”,
“abeyance”,”[2’bei2ns]“,”n.缓办,中止”,
“abide”,”[2’baid]“,”v.遵守”,
“ability”,”[2’biliti]“,”n.能力”,
“able”,”[’eibl]“,”adj.有能力的,能干的”,
“abnormal”,”[9b’n0:m2l]“,”adj.反常的,变态的”,
“aboard”,”[2’b0:d]“,”adv.船(车)上”,
“abolish”,”[2’b0li6]“,”v.废除,取消”,
4. 任务完成
Tags: 正则表达式
php学习 | 评论:0
| Trackbacks:0
| 阅读:2755
Submitted by jiashixiang on 2008, June 17, 1:34 PM
1、二农戏猪
2、干掉鸟人我就是天使
3、帅有个屁用!到头来还不是被卒吃掉
4、好好活着,因为我们会死很久
5、有没有听过“大猪说有,小猪说没有”的故事?
6、女友问我她死了我会怎样我坚定的说:我不会独活(再找一个活)她大悦
7、人工智能和天然愚蠢无法相提并论——因为我们主张纯天然。
8、在教堂听讲经的时候我们应该保持肃静,打扰别人睡觉是很不礼貌的。
9、陪聊,提供夜间上门服务。(一个墓志铭)
10、人又不聪明,还学人家秃顶!!
11、你是电,李四光,你是唯一的神话…
12、笨人的可怕之处并不在其笨,而在其自作聪明。
13、我总在牛a与牛c之间徘徊。
14、不怕被人利用,就怕你没用。
15、鄙视我的人这么多,你算老几
16、锄禾日当午,弯弓射大雕
17、秀发去无踪,头屑更出众!
18、没什么事不要找我,有事更不用找我
19、宁和明白人打一架,不跟sb说句话!
20、大女人不可一日无权,小女人不可一日无钱!
21、天若负我,我便昊;尔等若负我,我便晃!
22、春色满园关不住,我诱红杏出墙来。
23、就这样让你舒服,脱下你常拉的裤。
24、人生自古谁无死,啊个拉屎不用纸。
25、不蒸馒头争口气行吗?
26、他的刀是冷的,剑是冷的,心是凉的,血是冷的,靠,这人不死了吗?
27、生的伟大,死在花下!
28、如果输了今生那么我也不要来世。
29、我爱你!关你什么事?
30、女人是制造人类的工具,男人是使用工具的人类。
31、拿份报纸上厕所,俺是读书人。
32、再牛b的肖邦,也弹不出老子的悲伤!
33、诸葛亮出山前也没带过兵啊,你们凭啥要我有工作经验!
34、废话是人际关系的第一句。
35、只要锄头舞的好,那有墙角挖不倒?
36、可以不好好学习,但决不能不好好复习。
37、从一个朋友那里学到一句话:送你十个字——有他妈多远,滚他妈多远~记得第一次他对我们一群人说这个时,就看到所有人都在下面颁指头数是不是十个字
38、对付以默不作声来掩饰自己无知的人的最好方法就是以其人之道还治其人之身。
39、我第一次时很紧张,他一直要我温柔地放松,接着插入我身体,那里在流血,我痛得喊不出话来,这才明白……献血是这样的
40、连广告也信,读书读傻了吧!
41、想污染一个地方有两种方法:垃圾,或是钞票!
42、便秘了的原因是地球引力太小。
43、系统居然怀疑我灌水,我身边又没有水龙头。哦…明白了,身上有一个…
44、我不知道是我上了大学还是大学上了我。
45、大部分人一辈子只做三件事:自欺、欺人、被人欺。
46、痛苦本来就是清醒的人才能拥有的享受…
47、有人说生了孩子就不会痛经了,那就生一个吧!
48、花钱越多,离床越近。
49、戒烟容易,戒你太难
50、要在江湖混,最好是光棍!!
51、插人家洞的是插头,有洞被人家插的是插座!
52、要挑熟女,裙子好揪。
53、有钱人终成眷属。
54、问世间情为何物?一物降一物。
55、不要和我比懒,我懒得和你比。
56、我是耶稣他儿子,椰子~!
57、大学就是大概学学!
58、我左青龙,右白虎,肩膀纹个米老鼠。
59、bmw是别摸我,msn是摸死你
60、生活可以将就,生活也可以讲究!
61、别人的钱财乃我的身外之物。
62、早上长睡不起;晚上视睡如归
63、我这个人最老实。从不说谎话。这句除外。
64、不要说别人脑子有病,脑子有病的前提是必须有个脑子。
65、我最近真的很忙,甚至一天都很难保证有16小时的睡眠
66、别洗它,要不是这些泥,这破车早就散架了。
67、天灵灵,地灵灵,再来一个冰淇凌。
68、岁寒三友——火锅、白菜、热被窝。
69、本无意与众不同,怎奈何品位出众!
70、大师兄,听说二师兄的肉,比师傅的都贵了
71、生时何需久睡,死后自会长眠。
72、我希望有一天我能用鼠标双击我的钱包,然后选中一张100元,按住“ctrl-c”接着不停的“ctrl-v”…。
73、女为悦己者容男为悦己者穷!
74、教授在讲台上讲有机化学高分子。他在黑板上先画了个“酞键“,对大家说,“这是一个‘太监’,我们给再他按个‘甲基吧’。”
75、秃驴,敢跟贫道抢师太
76、男人所说的内在美,指的是胸罩里面,而不是内心。
77、我对坐我旁边的哥们说~~你离天才只有一步之隔
78、是金子,总会花光的;是镜子,总会反光的…
79、谁能90分钟不射~~中国国家足球队
80、天赐你一双翅膀,就应该被红烧…
81、犯贱是普遍真理,你我只是其中之一
82、男人长的帅有个屁用呀?到银行能用脸刷卡吗?
83、都说男人有钱就变坏,[脏话]我都当了二十多年的好人了!
84、脸先着地,无力回天。
85、一女人对一男人说:来我家吧,我下面给你吃。
86、不是你不笑,一笑粉就掉
87、高是高,是草包;矮是矮,经得踩;瘦是瘦,有肌肉。
88、唯女人与英语难过也,唯老婆与工作难找也
89、伤害人的东西有三种:烦恼,争吵,空的钱包。其中最伤人的是空钱包。
90、开车无难事,只怕有新人
91、与人争执时,退一步海阔天空;追女友时,退一步人去楼空。
92、听说女人如衣服,兄弟如手足。回想起来,我竟然七手八脚的裸奔了20年
93、我是个演员,一看见漂亮mm眼就圆…
94、上帝欲使人灭亡,必先使其疯狂;上帝欲使人疯狂,必先使其买房。
95、天塌下来你顶着,我垫着,呵呵……
96、易拉罐拉环爱着易拉罐,可易拉罐心里装着可乐
97、不做下一个谁,做第一个我。
98、宁愿相信世间有鬼,也不相信男人那张破嘴!
99、今天一群曰本人来我校参观——说实话,这是我第一次看到穿衣服的曰本人
100、念了十几年书,还是幼儿园比较好混!
娱乐 | 评论:0
| Trackbacks:0
| 阅读:1809
Submitted by jiashixiang on 2008, April 9, 11:10 AM
ySQL和Apache两个系统的编码(字符集)问题让我费劲脑筋,吃尽苦头。网上对这些问题的解决比较零散,比较片面,大部分是提供解决方法,却不说为什么。于是我将这几天收获总结一下,避免后来者再走弯路。这篇文章对PHP编写有一点帮助(看完你就知道,怎样让你的PHP程序在大部分空间提供商的服务器里显示正常),但是更多帮助在于网络服务器的架设和设置。
先说MySQL的字符集问题。Windows下可通过修改my.ini内的
复制内容到剪贴板代码:
# CLIENT SECTION
[mysql]
default-character-set=utf8
# SERVER SECTION
[mysqld]
default-character-set=utf8
这两个字段来更改数据库的默认字符集。第一个是客户端默认的字符集,第二个是服务器端默认的字符集。假设我们把两个都设为utf8,然后在MySQL Command Line Client里面输入“show variebles like“character_set_%”;”,可看到如下字符:
character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_results latin1
character_set_server utf8
character_set_system utf8
其中的utf8随着我们上面的设置而改动。此时,要是我们通过采用UTF-8的PHP程序从数据库里读取数据,很有可能是一串“?????”或者是其他乱码。网上查了半天,解决办法倒是简单,在连接数据库之后,读取数据之前,先执行一项查询“SET NAMES UTF8”,即在PHP里为
复制内容到剪贴板代码:
mysql_query("SET NAMES UTF8");
即可显示正常(只要数据库里信息的字符正常)。为什么会这样?这句查询“SET NAMES UTF8”到底是什么作用?
到MySQL命令行输入“SET NAMES UTF8;”,然后执行“show variebles like“character_set_%”;”,发现原来为latin1的那些变量“character_set_client”、“character_set_connection”、“character_set_results”的值全部变为utf8了,原来是这3个变量在捣蛋。查阅手册,上面那句等于:
复制内容到剪贴板代码:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
看看这3个变量的作用:
信息输入路径:client→connection→server;
信息输出路径:server→connection→results。
换句话说,每个路径要经过3次改变字符集编码。以出现乱码的输出为例,server里utf8的数据,传入connection转为latin1,传入results转为latin1,utf-8页面又把results转过来。如果两种字符集不兼容,比如latin1和utf8,转化过程就为不可逆的,破坏性的。所以就转不回来了。
但这里要声明一点,“SET NAMES UTF8”作用只是临时的,MySQL重启后就恢复默认了。
接下来就说到MySQL在服务器上的配置问题了。岂不是我们每次对数据库读写都得加上“SET NAMESUTF8”,以保证数据传输的编码一致?能不能通过配置MySQL来达到那三个变量默认就为我们要想的字符集?手册上没说,我在网上也没找到答案。所以,从服务器配置的角度而言,是没办法省略掉那行代码的。
总结:为了让你的网页能在更多的服务器上正常地显示,还是加上“SET NAMES UTF8”吧,即使你现在没有加上这句也能正常访问。
Tags: 编码
php学习 | 评论:0
| Trackbacks:0
| 阅读:2936