php 二级联动菜单

 更新时间:2016年11月25日 16:02  点击:1508

<?php
//PHP部分:   
  //取得下拉联动数据   
  require("conn.php");
  $result=mysql_query("SELECT * FROM units LEFT JOIN users ON (users.unit=units.unid)");   
  $mx=mysql_num_rows($result);   
   
  for   ($i=0;$i<$mx;$i++)   {   
  $r=mysql_fetch_array($result);   
  $uname=$r['uname'];   
  $unid   =$r['unid'];   
  $usname=$r['username'];   
  $usid=$r['userid'];   
   
  if   ($lasun!=$uname)   {   
  $java1=$java1   .   ""$uname",";   
  $java2=$java2   .   ""$unid",";   
  $lasun=$uname;   
   
  if   ($i>0)   {   
  $java3=$java3   .   "],[";   
  $java4=$java4   .   "],[";   
  }   
  }   else   {   
  $java3=$java3   .   ",";   
  $java4=$java4   .   ",";   
  }   
   
  $java3=   $java3   .   ""$usname"";   
  $java4=   $java4   .   ""$usid"";   
   
  }   
   
  $java1="["   .   substr_replace($java1,"",-1)   .   "]n";   
  $java2="["   .   substr_replace($java2,"",-1)   .   "]n";   

  $java3="[["   .   $java3   .   "]]n";   
  $java4="[["   .   $java4   .   "]]n";   
   
   
   
  //javascript部分   
  ?>
  <SCRIPT   LANGUAGE="JavaScript"   DEFER>   
  var   fMenu   =   <?=$java1?>   
  var   fValue   =   <?=$java2?>   
  var   sMenu   =   <?=$java3?>   
  var   sValue   =   <?=$java4?>   
   
  var   oWhere   =   document.all.tar;   
  var   ofMenu   =   document.createElement("<SELECT   name='unid'>");   
  var   osMenu   =   document.createElement("<SELECT   name='usid'>");   
  with(oWhere)appendChild(ofMenu),appendChild(osMenu);   
   
  createMainOptions();   
  createSubOptions(0);   
   
  ofMenu.onchange   =   function()   {createSubOptions(this.selectedIndex);};   
   
  function   createMainOptions()   {   
          for(var   i=0;i<fMenu.length;i++)ofMenu.options[i]   =   new   Option(fMenu[i],fValue[i]);   
  }   
  function   createSubOptions(j)   {   
          with(osMenu)   {   
                  length=0;   
                  for(var   i=0;i<sMenu[j].length;i++)osMenu.options[i]   =   new   Option(sMenu[j][i],sValue[j][i]);   
          }   
  }   
   
  function   checkuser()   {   
  if   (document.forms[1].elements[1].value=="")   {   alert("没有选择用户");   return   false;   }   
  }   
  </SCRIPT>   
   
  <!-- 在HTML中引用   -->
  <div   id="tar"   style="display:inline"></div>   
  <!--   
  另外附users和units数据表结构   
  表users:   
  userid   
  username   
  unit   
   
  表units:   
  unid   
  uname

php 自动下载远程服务器文件
<form method="post">
<input name="url" size="50" />
<input name="submit" type="submit" />
</form>
< ?php
// maximum execution time in seconds
set_time_limit (24 * 60 * 60);
if (!isset($_POST['submit'])) die();
// folder to save downloaded files to. must end with slash
$destination_folder = 'temp/';
 
$url = $_POST['url'];
$newfname = $destination_folder . basename($url);
$file = fopen ($url, "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf)
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
?>

第一步 找到这个文件 /fckeditoreditorfilemanagerbrowserdefaultfrmresourceslist.html

将已经存在的代码修改为:

复制内容到剪贴板
代码:
oListManager.GetFolderRowHtml = function( folderName, folderPath )
{
// Build the link to view the folder.
var sLink = '<a href="#" onclick="OpenFolder('' + ProtectPath( folderPath ) + '');return false;"><img alt="" src="images/Folder.gif" width="16" height="16" border="0"> ' ;

var rLink = '<a href="#" title="Rename Folder" onclick="RenameFolder('' + folderName + '');return false;"><img src="images/rename.gif" width="16" height="16" border="0" alt="Rename Folder" title="Rename Folder"></a>' ;

var dLink = '<a href="#" title="Delete Folder" onclick="DeleteFolder('' + folderName + '');return false;"><img src="images/delete.gif" width="16" height="16" border="0" alt="Delete Folder" title="Delete Folder">' ;

    var ssLink =  rLink + dLink;
return '<tr>' +
   '<td width="16"></td><td nowrap>&nbsp;' +
    sLink +
    folderName +
    '</a></td><td align="right" nowrap>' + ssLink +
  '</td></tr>' ;
}

oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
{
var sIcon = oIcons.GetIcon( fileName ) ;

// Build the link to view the file.
var sLink = '<a href="#" onclick="OpenFile('' + ProtectPath( fileUrl ) + '');return false;"><img alt="" src="images/icons/' + sIcon + '.gif" width="16" height="16" border="0"> ' ;

var vLink = '<a href="' + ProtectPath( fileUrl ) + '" target="_blank"" title="View file"><img src="images/view.gif" width="16" height="16" border="0" alt="View File" title="View File"></a>' ;

var rLink = '<a href="#" title="Rename file" onclick="RenameFile('' + fileName + '');return false;"><img src="images/rename.gif" width="16" height="16" border="0" alt="Rename File" title="Rename File"></a>' ;

var dLink = '<a href="#" title="Delete file" onclick="DeleteFile('' + fileName + '');return false;"><img src="images/delete.gif" width="16" height="16" border="0" alt="Delete File" title="Delete File"></a>' ;


// Get the file icon.
    var ssLink =  vLink + rLink + dLink;
return '<tr>' +
   '<td width="16"></td><td>&nbsp;' +
    sLink +
    fileName +
    '</a>' +
   '</td><td align="right" nowrap>&nbsp;' +
    fileSize +
    ' KB' + ssLink +
  '</td></tr>' ;
}

function OpenFolder( folderPath )
{
// Load the resources list for this folder.
window.parent.frames['frmFolders'].LoadFolders( (folderPath) ) ;
}

function OpenFile( fileUrl )
{
window.top.opener.SetUrl( fileUrl.replace( '#', '%23' ) ) ;
window.top.close() ;
window.top.opener.focus() ;
}

function DeleteFolder( folderUrl )
{
if ( !confirm( 'Do you really delete the folder "' + folderUrl + '" ?' ) ) return false;

oConnector.SendCommand( 'DeleteFolder', 'FolderName=' + ( encodeURI(folderUrl) ) , DeleteFolderCallBack ) ;
}

function DeleteFolderCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;

switch ( iErrorNumber )
{
  case 0 :
   Refresh() ;
   break ;
  case 201 :
   alert( 'You have no permissions to delete the folder' ) ;
   break ;
  case 202 :
   alert( 'Invalid folder name' + sErrorDescription ) ;
   break ;
  case 203 :
   alert( 'Folder not exists' + sErrorDescription ) ;
   break ;
  default :
   alert( 'Error deleting folder. nError number: ' + iErrorNumber  + ' nError description: ' + sErrorDescription ) ;
   break ;
}
}

function DeleteFile(fileUrl)
{
if ( !confirm( 'Do you really delete the file "' + fileUrl + '" ?' ) ) return false;

oConnector.SendCommand( 'DeleteFile', 'FileName=' + encodeURI( fileUrl ) , DeleteFileCallBack ) ;
}

function DeleteFileCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;

switch ( iErrorNumber )
{
  case 0 :
   Refresh() ;
   break ;
  case 301 :
   alert( 'You have no permissions to delete the file' ) ;
   break ;
  case 302 :
   alert( 'Invalid file name' + sErrorDescription ) ;
   break ;
  case 303 :
   alert( 'File not exists' + sErrorDescription  ) ;
   break ;
  default :
   alert( 'Error deleting file. nError number: ' + iErrorNumber  + ' nError description: ' + sErrorDescription ) ;
   break ;
}
}

function RenameFolder( folderName )
{
var newName = prompt('Please enter the new folder name for "' + folderName + '":', folderName);

if ((newName != null) && (newName != '') && (newName != folderName)) {
  oConnector.SendCommand( 'RenameFolder', "FolderName=" + encodeURI(folderName) + "&NewName=" + encodeURI ( newName ), RenameFolderCallBack ) ;
}
}

function RenameFolderCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;

switch ( iErrorNumber )
{
  case 0 :
   Refresh() ;
   break ;
  case 401 :
   alert( 'You have no permissions to rename the folder' ) ;
   break ;
  case 402 :
   alert( 'Invalid folder name' + sErrorDescription ) ;
   break ;
  case 403 :
   alert( 'is not Folder' + sErrorDescription ) ;
   break ;
  case 404 :
   alert( 'Folder not exists' + sErrorDescription ) ;
   break ;
  default :
   alert( 'Error renaming folder. nError number: ' + iErrorNumber  + ' nError description: ' + sErrorDescription ) ;
   break ;
}
}

function RenameFile( fileName )
{
var newName = prompt('Please enter the new file name for "' + fileName + '":', fileName);

if ((newName != null) && (newName != '') && (newName != fileName)) {
  oConnector.SendCommand( 'RenameFile', "FileName=" + encodeURI( fileName ) + "&NewName=" + encodeURI( newName ), RenameFileCallBack ) ;
}
}

function RenameFileCallBack( fckXml )
{
var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;
var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;
var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;

switch ( iErrorNumber )
{
  case 0 :
   Refresh() ;
   break ;
  case 501 :
   alert( 'You have no permissions to rename the file' ) ;
   break ;
  case 502 :
   alert( 'Invalid file name' + sErrorDescription ) ;
   break ;
  case 503 :
   alert( sErrorDescription +  'is not a file' ) ;
   break ;
  case 504 :
   alert( 'File not exists' + sErrorDescription  ) ;
   break ;
  default :
   alert( 'Error renaming file. nError number: ' +  ' nError description: ' + sErrorDescription ) ;
   break ;
}
}

2。 第二步 找到这个文件 /fckeditoreditorfilemanagerbrowserdefaultfrmfolders.html
  将函数OpenFolder(folderPath)最后一句修改为:

复制内容到剪贴板
代码:
var agent = navigator.userAgent;
if(agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {
    window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, (folderPath) ) ;
}else{
    window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, encodeURI(folderPath) ) ;
}

3。第三步,找到fckeditoreditorfilemanagerbrowserdefaultbrowser.html

添加函数:

复制内容到剪贴板
代码:
function selectBrowser(str) {
  var agent = navigator.userAgent;
  if(agent.indexOf('Gecko') != -1) {
     return encodeURIComponent(str);
  }else if(agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {
     return str;
  }else{
     return encodeURIComponent(str);
  }
}

第79行修改为: oConnector.ConnectorUrl += 'ServerPath=' + selectBrowser( sServerPath ) + '&' ;
第91行修改为: sUrl += '&CurrentFolder=' + selectBrowser( this.CurrentFolder ) ;

4。第四步 再找这个文件 fckeditoreditorfilemanagerconnectorsphpcommands.php
添加:

复制内容到剪贴板
代码:
  header('Content-Type:text/html;charset=UTF-8');
function DeleteFolder( $resourceType, $currentFolder ) {
$sFolderName = $_GET['FolderName'];
$sErrorMsg      = '';
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFolderName ,'DeleteFolder');
    /*if(empty($_cookie[xxxxxx])) {
  $sErrorNumber    = "201"; //permissions
}else */ if(empty($_GET['FolderName']) or (!is_dir($sServerDir))) {
  $sErrorNumber    = "202";  //Invalid Folder Name.
  $sErrorMsg         =  $sFolderName;
}else    if(!file_exists($sServerDir)) {
  $sErrorNumber    = "203"; // Folder not exists
  $sErrorMsg         =  $sFolderName;
  echo $sFolderName;exit();
    }else{
     if(@rmdir($sServerDir)) {
     $sErrorNumber = "0";//success
     }else{
     $sErrorNumber = "222";
     $sErrorMsg    = "目录删除失败,原因:1。目录不为空n2。没有权限";
     }
}
echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
}

function DeleteFile( $resourceType, $currentFolder ) {
$sFileName     = iconv("utf-8","gbk",$_GET['FileName']);
$sErrorMsg            = "";

$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFileName ,'DeleteFile');
/*if(empty($_COOKIE['hazysuser'])) {
     $sErrorNumber   = "301";  //Security Error.
}else*/ if( empty($_GET['FileName']) or (!is_file($sServerDir))) {
  $sErrorNumber   = "302"; //Invalid File Name.
  $sErrorMsg        = $sFileName;
}else if(!file_exists($sServerDir)) {
  $sErrorNumber   = "303"; //File not exists.
  $sErrorMsg        = $sFileName;
}else{
        if(@unlink($sServerDir)) {
     $sErrorNumber  = "0";
  }else{
     $sErrorNumber  = "333";
           $sErrorMsg     = "无法删除此文件,原因:n1。没有权限。n2。必须在DOS下才能删除的特殊文件";
  }
}
echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}

function RenameFolder( $resourceType, $currentFolder ) {
    $sErrorMsg   = '';
$sFolderName = urldecode(mb_convert_encoding($_GET['FolderName'],"gbk","utf-8"));
$sNewName  = urldecode(mb_convert_encoding($_GET['NewName'],"gbk","utf-8"));
$sServerDir  = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFolderName ,'RenameFolder');
$sNewDir  = ServerMapFolder( $resourceType, $currentFolder . "/" . $sNewName ,'RenameFolder' );
   
   
    /*if( empty($_COOKIE[xxxxxx])) {
  $sErrorNumber   = "401";
}else */if ( empty($_GET['FolderName']) or  empty($_GET['NewName']) ) {
  $sErrorNumber = "402";//Invalid Folder Name.
  $sErrorMsg      = $sFolderName .' != '.$sNewName;
/*}else if (!is_dir($sServerDir)) {
        $sErrorNumber = "403";  //is not Folder
  $sErrorMsg    = $sFolderName.' is not Folder';
}else if (!file_exists($sServerDir)) {
   $sErrorNumber = "404";  //Folder not exists.
   $sErrorMsg    = $sFolderName;*/
}else {
  if(rename($sServerDir,$sNewDir,stream_context_create() )) {
     $sErrorNumber = "0";
  }else{
     $sErrorNumber = "444";
           $sErrorMsg = "无法修改目录名称:".$sFolderName.'为'.$sNewName.'。';
  }
}
echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}

function RenameFile( $resourceType, $currentFolder ) {
$sFileName = iconv("utf-8","gbk",$_GET['FileName']);
$sNewName = iconv("utf-8","gbk",$_GET['NewName']);
$sErrorMsg  = '';
$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFileName ,'RenameFile');
$sNewDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sNewName ,'RenameFile');

    /*if(empty($_COOKIE[xxxxxx])) {
    $sErrorNumber   = "501";
}else */if( empty($_GET['FileName']) or empty($_GET['NewName']) ) {
  $sErrorNumber  = "502";
}else  if(!is_file($sServerDir)) {
  $sErrorNumber = '503';
  $sErrorMsg    = $sFileName .' is not a file';
}else if(!file_exists($sServerDir)) {
  $sErrorNumber = '504';
  $sErrorMsg    = $sFileName .' is not exists';
}else{
  if(rename($sServerDir,$sNewDir)) {
     $sErrorNumber    = "0";
  }else{
     $sErrorNumber    = "555";
     $sErrorMsg = "无法重命名此文件:".$sServerDir;
  }
}
echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}

修改function GetFoldersAndFiles( $resourceType, $currentFolder )函数,并添加以下内容:

复制内容到剪贴板
代码:
$agent = $_SERVER['HTTP_USER_AGENT'];
if(stripos($agent,"gecko")>0) {
  $currentFolder   = urldecode($currentFolder);
}
if(stripos($agent,"gecko")>0) {
  $sServerDir = iconv("utf-8","gbk",$sServerDir);
}

5。第五步 fckeditoreditorfilemanagerconnectorsphpconfig.php
第28行修改为:$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder','DeleteFolder','DeleteFile','RenameFolder','RenameFile') ;

6。第六步 fckeditoreditorfilemanagerconnectorsphpconnector.php
在相应地方添加以下代码:

复制内容到剪贴板
代码:
  case "DeleteFolder":
   DeleteFolder( $sResourceType, $sCurrentFolder );
   break ;
  case "DeleteFile":
   DeleteFile( $sResourceType, $sCurrentFolder );
   break ;
  case "RenameFolder":
   RenameFolder( $sResourceType, $sCurrentFolder );
   break ;
  case "RenameFile":
   RenameFile( $sResourceType, $sCurrentFolder );
   break ;

7。第七步 fckeditoreditorfilemanagerconnectorsphpio.php
第70行函数function CreateServerFolder( $folderPath, $lastFolder = null )里添加:

$folderPath = iconv("utf-8","gbk",$folderPath);


8。第八步 fckeditoreditorfilemanagerconnectorsphputil.php
第50行修改为:
return (mb_convert_encoding(htmlspecialchars($value),"UTF-8","GBK")) ;

上面的为完全版,但要自己动手。在 http://www.uushare.com/user/littlenew/file/1942702里有免费版,不过里面某些代码已经加密,请勿破解,保证不含任何恶意代码,也不会有反向连接等一系列其它联网活动。

[url= http://www.hazytime.cn/article/article.asp?/6370-1-1.html]也可以到我的网站查看[/url]。

1。我的IE8在apache下不能浏览中文目录里的图片,怎么办?
       在IE8的设置里选中:发送 UTF-8 URL

2。免费版本已经存在的问题:在firefox不能修改、删除文件,只能上传文件.

测试环境:windows 2003 + apache 2.2.11 + PHP5.3 + UTF-8(不带BOM)

fckeditor具有查看/重命名/删除功能

在php中字符串函数有很多哦,在说了php本来就是由函数组成了,这让开发人员可以加快网站的开发速度哦,好了费话不说多了我们来看看我为各位朋友免费提供的php 字符串函数教程与实例代码吧。

在php中字符串函数有很多哦,在说了php本来就是由函数组成了,这让开发人员可以加快网站的开发速度哦,好了费话不说多了我们来看看我为各位朋友免费提供的php 字符串函数教程与实例代码吧。

AddSlashes: 字符串加入斜线。
bin2hex: 二进位转成十六进位。
Chop: 去除连续空白。
Chr: 返回序数值的字符。
chunk_split: 将字符串分成小段。
convert_cyr_string: 转换古斯拉夫字符串成其它字符串。
crypt: 将字符串用 DES 编码加密。
echo: 输出字符串。
explode: 切开字符串。
flush: 清出输出缓冲区。
get_meta_tags: 抽出文件所有 meta 标记的资料。
htmlspecialchars: 将特殊字符转成 HTML 格式。
htmlentities: 将所有的字符都转成 HTML 字符串。
implode: 将数组变成字符串。
join: 将数组变成字符串。
ltrim: 去除连续空白。
md5: 计算字符串的 MD5 哈稀。
nl2br: 将换行字符转成 <br>。
Ord: 返回字符的序数值。
parse_str: 解析 query 字符串成变量。
print: 输出字符串。
printf: 输出格式化字符串。
quoted_printable_decode: 将 qp 编码字符串转成 8 位字符串。
QuoteMeta: 加入引用符号。
rawurldecode: 从 URL 专用格式字符串还原成普通字符串。
rawurlencode: 将字符串编码成 URL 专用格式。
setlocale: 配置地域化信息。
similar_text: 计算字符串相似度。
soundex: 计算字符串的读音值
sprintf: 将字符串格式化。
strchr: 寻找第一个出现的字符。
strcmp: 字符串比较。
strcspn: 不同字符串的长度。
strip_tags: 去掉 HTML 及 PHP 的标记。
StripSlashes: 去掉反斜线字符。
strlen: 取得字符串长度。
strrpos: 寻找字符串中某字符最后出现处。
strpos: 寻找字符串中某字符最先出现处。
strrchr: 取得某字符最后出现处起的字符串。
strrev: 颠倒字符串。
strspn: 找出某字符串落在另一字符串遮罩的数目。
strstr: 返回字符串中某字符串开始处至结束的字符串。
strtok: 切开字符串。
strtolower: 字符串全转为小写。
strtoupper: 字符串全转为大写。
str_replace: 字符串取代。
strtr: 转换某些字符。
substr: 取部份字符串。
trim: 截去字符串首尾的空格。
ucfirst: 将字符串第一个字符改大写。
ucwords: 将字符串每个字第一个字母改大写。


下面来看看php字符串函数的实例吧。

josh@superfork.com (22-Jun-1999) 写了一个函数,可将十六进位转成二进位。
<?
function hex2bin($data) {
$len = strlen($data);
for($i=0;$i&lt;$len;$i+=2) {
$newdata .= pack("C",hexdec(substr($string,$i,2)));
}
return $newdata;
}
?>
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串的连续空白清除。
使用范例
<?
$trimmed = Chop($line);
?>
参考: trim()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符的序数转成 ASCII 的字符。本函数和 ord() 成对照。
使用范例
<?
$str .= chr(27);
$str = sprintf("字符串的结束字符是: %c", 27);
?>
参考: ord() sprintf()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符变成小段供其它函数使用。例如,base64_encode。内定是参数 chunklen (76 个字符) 每隔 76 个字符插入 end ("rn")。返回新字符串而不改动原字符串。
使用范例
将字符串 $data 格式化成 MIME BASE64 格式
<?
$new_string = chunk_split(base64_encode($data));
?>
参考: ereg_replace()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将古斯拉夫字符串转成其它的字符串。from 及 to 二个参数是字符,其代表意义如下:
k - koi8-r
w - windows-1251
i - iso8859-5
a - x-cp866
d - x-cp866
m - x-mac-cyrillic
语法: string crypt(string str, string [salt]);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数将字符串用 UNIX 的标准加密 DES 模块加密。这是单向的加密函数,无法解密。欲比对字符串,将已加密的字符串的头二个字符放在 salt 的参数中,再比对加密后的字符串。
更详细的资料请参考 UNIX Manual (man) 中的 crypt。
在一些较新的 UNIX 版本中,除了 DES 之外还提供了其它的加密模块,如 MD5。甚至有些系统还用 MD5 取代 DES。在 salt 参数还有一些变化,端看传给 salt 参数的字符串长度而定:
CRYPT_STD_DES - 标准的 DES 编码,输入 2 字符的 salt。
CRYPT_EXT_DES - 延伸的 DES 编码,输入 9 字符的 salt。
CRYPT_MD5 - MD5 编码,输入 12 字符加上 $1$ 的 salt。
CRYPT_BLOWFISH - 延伸的 DES 编码,输入 16 字符加上 $2$ 的 salt。
此外,若不使用 salt 参数,则程序会自动产生。
返回值: 无
函数种类: PHP 系统功能
内容说明: 本函数将字符串输出。由于它不是真正的函数,因此也没有返回值。
使用范例
<?php
echo "Hello World";
?>
参考: print() printf() flush()
返回值: 数组
函数种类: 资料处理
内容说明: 本函数将字符串依指定的字符串或字符 separator 切开。将切开后的字符串返回到数组变量中。
使用范例
<?
$pizza = "第一片 第二片 第三片 第四片 第五片 第六片";
$pieces = explode(" ", $pizza);
?>
参考: implode()
返回值: 无
函数种类: 资料处理
内容说明: 本函数无输入亦无输出。将输出缓冲区的资料送出,并清出。
语法: array get_meta_tags(string filename, int [use_include_path]);
返回值: 数组
函数种类: 资料处理
内容说明: 本函数将 homepage 中的所有 <meta ......> 标记的资料取出并放置数组变量返回。例如
<html>
<head>
<meta content="彭武兴">
<meta content="PHP BIBLE">
<title>PHP BIBLE</title>
</head><!-- 本函数处理只到这儿结束 -->
本函数找出 meta 标记,name 属性的字符串为数组索引,而 content 属性字符串则为数组的内容资料了。治募 注意的是本函数为 PHP 原生函数,在 UNIX 系列平台上无法直接处理麦金塔的文件格式,因为换行字符不同。blake@mediaone.net 指出 (07-Jun- 1999),参数 filename 也可以是 URL,函数将抽出远端服务器的文件 meta 标记。而函数在处理时,遇到 < /head> 标记结束,要是 <meta ....> 标记放在 </head> 后将无法处理。
语法: string htmlspecialchars(string string);
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将特殊字符转成 HTML 的字符串格式 ( &....; )。最常用到的场合可能就是处理客户留言的留言版了。
& (和) 转成 &
" (双引号) 转成 "
< (小于) 转成 &lt;
> (大于) 转成 &gt;
此函数只转换上面的特殊字符,并不会全部转换成 HTML 所定的 ASCII 转换。
使用范例
这是 aulbach@unter.franken.de (27-Jan-1999) 所提供的范例
<FORM ACTION=bla>
<H2>Restaurant Description<H2>
Name of restaurant:
<INPUT TYPE=text VALUE="&lt;?
echo HTMLSpecialChars($restname); ?>"&gt;
<!-- 变量 $restname 是酱子的 $restname=""The White Horse""; -->
<BR>
输入描述 (若您会 HTML,可直接使用): <BR>
<TEXTAREA ><?
echo HTMLSpecialChars($descript);
?></TEXTAREA>
<INPUT TYPE=submit>
</FORM>
参考: htmlentities() nl2br()
语法: string htmlentities(string string);
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数有点像 htmlspecialchars() 函数,但本函数会将所有 string 的字符都转成 HTML 的特殊字集字符串。不过在转换后阅读网页源代码的方面,会有很多困扰,尤其是网页源代码的中文字会变得不知所云,浏览器上看到的还是正常的。
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将数组的内容组合成一个字符串,参数 glue 是字之间的分隔符号。
使用范例
<?
$colon_separated = implode(":", $array);
echo $colon_separated;
?>
参考: explode() join() split()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数是 implode 函数的别名。
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数用来删去字符串中的连续空白带 (whitespace)。
语法: string md5(string str);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数用来计算 MD5 哈稀。关于 MD5 编码法,可以参考 RSA Data Security, Inc. MD5 Message- Digest Algorithm. RFC1321;或是赖溪松、韩亮、张真诚等合着之近代密码学及其应用,11.3。
语法: string nl2br(string string);
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将换行字符转换成 HTML 换行的 <br> 指令。
参考: htmlspecialchars() htmlentities()
返回值: 整数
函数种类: 资料处理
内容说明: 本函数返回字符的 ASCII (美国国家标准交换码) 序数值。本函数和 chr() 函数相反。
使用范例
<?php
if (ord($str) == 10) {
echo("字符串 $str 的第一个字是换行字符。n");
}
?>
参考: chr()
语法: void parse_str(string str);
返回值: 无
函数种类: 资料处理
内容说明: 本函数可将浏览器返回的 GET 方法的 QUERY_STRING 字符串解析。返回的变量名及值就依 QUERY_STRING 的名称及值。
使用范例
<?php
$str = "first=value&second[]=this+works&second[]=another";
parse_str($str);
echo $first; // 显示出 "value" 字符串
echo $second[0]; // 显示 "this works" 字符串
echo $second[1]; // 显示 "another" 字符串
?>
返回值: 布尔值
函数种类: 资料处理
内容说明: 本函数输出字符串。若成功则返回 1,失败则返回 0。例如传输中途客户的浏览器突然挂了,则会造成输出失败的情形。
参考: echo() printf() flush()
返回值: 整数
函数种类: 资料处理
内容说明: 本函数依参数 format 指定的内容格式将字符串格式化。格式的细节可以参考 sprintf()。
参考: print() sprintf() flush()
语法: string quoted_printable_decode(string str);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数可以将 quoted-printable 后的字符串解码成为 8 位编码的字符串。而本函数类似 imap_qprint() 函数,只一不同的地方是使用 imap_qprint() 函数需要让系统加入 IMAP 的模块,而本函数不需要 IMAP 模块。
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串中含有 . \ + * ? [ ^ ] ( $ ) 等字符的前面加入反斜线 "" 符号。
参考: addslashes() htmlentities() htmlspecialchars() nl2br() stripslashes()
语法: string rawurldecode(string str);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数将字符串解码。从 URL 的字符串专用格式解成普通字符串。详细的编码解码信息及规格文件可以参考 RFC 1738。
参考: rawurlencode()
语法: string rawurldecode(string str);
返回值: 字符串
函数种类: 编码处理
内容说明: 本函数将字符串编码成 URL 的字符串专用格式,特殊的字符会转换成百分比符号后面加上二个十六位数字的格式。例如,空格就会变成 %20。
使用范例
<?php
echo '&lt;a href="ftp://guest:', rawurlencode ('foo @+%/'), '@localhost/x.txt">';
?&gt;
参考: rawurldecode()

返回值: 字符串
函数种类: 操作系统与环境
内容说明: 本函数用来配置地域的信息。参数 category 有下列的选择:
LC_ALL 包括下面的全项选项都要。
LC_COLLATE 配置字符串比较,PHP 目前尚未实作出来本项。
LC_CTYPE 配置字符类别及转换。例如全变大写 strtoupper()。
LC_MONETARY 配置金融货币,PHP 目前尚未实作。
LC_NUMERIC 配置小数点后的位数。
LC_TIME 配置时间日期格式,与 strftime() 合用。
而参数 locate 若是空字符串 "",则会使用系统环境变量的 locate 或是 LANG 的值。若 locate 为零,则不会改变地域化配置。返回新的地域,若系统尚未实作则返回 false。
使用范例
Michal Fita <manveru@witrynka.pl> 于 11-Jan-1999 11:01 提出这个以波兰作地域化的例子。
<?
setlocale("LC_ALL", "pl");
$net = "1234,56";
$gross = "1,22" * $net;
printf("毛利: %s, 净利: %s", $gross, $net");
/* 波兰总?/font>[值税为 22% */
?&gt;
返回值则为
毛利: 1234,56, 净利: 1506,1632
返回值: 整数
函数种类: 资料处理
内容说明
本函数用来计算比较二字符串的相似程度。
返回值: 字符串
函数种类: 资料处理
内容说明: Soundex 值是利用英文字的读音近似值所求得的值,值由四个字符构成,第一个字符为英文字母,后三个为数字。在拼音文字中有时会有会念但不能拼出正确字的情形,特别是在做搜寻引擎时面对用户传入的英文字符串,可用本函数做类似模糊比对的效果。例如 Knuth 和 Kant 二个字符串,它们的 soundex 值都是 H416。更详细的说明参考 Donald Knuth 大师的名著:电脑程序设计的艺术 (The Art Of Computer Programming) 第三卷排序和搜寻。
使用范例
<?
$str1=soundex("Wilson");
$str2=soundex("Waillsume");
echo "soundex("Wilson")=$str1 等于n";
echo "soundex("Waillsume")=$str2n";
echo "值均为 $str1";
?>
上例返回的字符串为
soundex("Wilson")=W425 等于
soundex("Waillsume")=W425
值均为 W425
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数用来将字符串格式化。参数 format 是转换的格式,以百分比符号 % 开始到转换字符为止。而在转换的格式间依序包括了
填空字符。0 的话表示空格填 0;空格是默认值,表示空格就放着。
对齐方式。默认值为向右对齐,负号表向左对齐。
字段宽度。为最小宽度。
精确度。指在小数点后的浮点数位数。
类型,见下表 % 印出百分比符号,不转换。
b 整数转成二进位。
c 整数转成对应的 ASCII 字符。
d 整数转成十进位。
f 倍精确度数字转成浮点数。
o 整数转成八进位。
s 整数转成字符串。
x 整数转成小写十六进位。
X 整数转成大写十六进位。
使用范例
<?
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// 此时变量 $money 值为 "123.1";
$formatted = sprintf ("%01.2f", $money);
// 此时变量 $ formatted 值为 "123.10"
?>
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数也就是 strstr() 函数。
返回值: 整数
函数种类: 资料处理
内容说明: 本函数用来比较二字符串的大小。返回负数表示 str1 小于 str2;返回正数表示 str1 大于 str2;返回零表示二字符串相同。
参考: ereg() substr() strstr()
返回值: 整数
函数种类: 资料处理
内容说明: 本函数用来比较二字符串并计算出不同处的字符串长度。
参考: strspn()
语法: string strip_tags(string str);
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数可去掉字符串中包含的任何 HTML 及 PHP 的标记字符串。若是字符串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会返回错误。而本函数和 fgetss() 有着相同的功能。
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数可去掉字符串中的反斜线字符。若是连续二个反斜线,则去掉一个,留下一个。若只有一个反斜线,就直接去掉。
参考: addslashes()
返回值: 整数
函数种类: 资料处理
内容说明: 本函数返回指定的字符串长度。
返回值: 整数
函数种类: 资料处理
内容说明: 本函数用来寻找字符串 haystack 中的字符 needle 最后出现的位置。值得注意的是 needle 只能是一个字符,中文字等就不适合了。若找不到指定的字符,则返回 false 值。
参考: strpos() strrchr() substr() strstr()
返回值: 整数
函数种类: 资料处理
内容说明: 本函数用来寻找字符串 haystack 中的字符 needle 最先出现的位置。值得注意的是 needle 只能是一个字符,中文字等就不适合了。若找不到指定的字符,则返回 false 值。参数 offset 可省略,用来Y表示从 offset 开始找。
参考: strrpos() strrchr() substr() strstr()
返回值: 整数
函数种类: 资料处理
内容说明: 本函数用来寻找字符串 haystack 中的字符 needle 最后出现位置,并将此位置起至字符串 haystack 结束之间的字符串返回。若没有找到 needle 则返回 false。
使用范例
下例取回环境变量 PATH 之最后一个路径
<?php
$dir = substr( strrchr( $PATH, ":" ), 1 );
echo "最后的路径为: ".$dir;
?>
参考: substr() strstr()
返回值: 字符串
函数种类: 资料处理
内容说明: 将字符串前后颠倒。
使用范例
下例的返回字符串为 "gneP nosliW"
<?
$str=strrev("Wilson Peng");
echo $str;
?>
返回值: 整数
函数种类: 资料处理
内容说明: 本函数将 str2 字符串当遮罩,可用来计算 str1 字符串中有几个字符落在 str2 遮罩中。
参考: strcspn()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将 needle 最先出现在 haystack 处起至 haystack 结束的字符串返回。若找不到 needle 则返回 false。
参考: strrchr() substr() ereg()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串 arg1 依字符串 arg2 的值切开成小段小段的字符串。
使用范例: 本例将 I will be back 字符串依空白切开。
<?php
$string = "I will be back";
$tok = strtok($string," ");
while($tok) {
echo "单字=$tok&lt;br>";
$tok = strtok(" ");
}
?&gt;
参考: split() explode()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串 str 全部变小写字符串。
参考: strtoupper() ucfirst()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串 str 全部变大写字符串。
参考: strtolower() ucfirst()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str。 mlevine@adtraq.com (11-Apr-1999) 指出在 PHP 3.0.7 版,本函数有些 bug,而 nadeem@bleh.org (05-Jun-1999) 补充在 PHP 3.0.8 版本函数就回复正常了。
使用范例
下例将 %body% 以 black 取代
<?php
$bodytag = str_replace("%body%", "black", "&lt;body text=%body%>");
echo $bodytag;
?&gt;
参考: ereg_replace()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串 str 中和 from 有关的字符一一转成 to 的字符。
参考: ereg_replace()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数将字符串 string 的第 start 位起的字符串取出 length 个字符。若 start 为负数,则从字符串尾端算起。若可省略的参数 length 存在,但为负数,则表示取到倒数第 length 个字符。
使用范例
<?
echo substr("abcdef", 1, 3); // 返回 "bcd"
echo substr("abcdef", -2); // 返回 "ef"
echo substr("abcdef", -3, 1); // 返回 "d"
echo substr("abcdef", 1, -1); // 返回 "bcde"
?>
参考: strrchr() ereg()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数返回字符串 string 首尾的空白字符去除后的字符串。
参考: chop() ltrim()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数返回字符串 str 第一个字的字首字母改成大写。
参考: strtoupper() strtolower()
返回值: 字符串
函数种类: 资料处理
内容说明: 本函数返回字符串 str 每个字的字首字母全都改成大写。


1)echo,print,printf,sprintf

前两个函数是输出字符串.字符串中如果有变量名则被替换成其值.

后两个函数类似于C的同名函数.

(2)strchr,strlen,strtok,strrchr,strrev,strstr,strtolower,

strtoupper,substr,ucfirst

这些是常用的字符串操作函数,有些和C中的同名函数意义完全一致.

strrev是把一个字符串翻转.

strtolower和strtoupper的意思应该不用解释了.

ucfirst是把字符串的第一个字符变成大写.

substr是返回字符串的一个子串,用法是:substr(字符串,头,长度).

头位置是 从0算起的.如果是负数,则是从尾部向前数的意思.

(3)Chr,Ord

类似于C的同名函数.

(4)explode,implode,join

这些是和数组有关的函数.

explode(字符串,分割符)返回一个将字符串在分割符处分开所产生的数组.

implode(数组,分割符)返回一个将数组各元素之间插上分割符而成的字符串.

join与implode意义相同.

(5)Chop

去掉字符串尾部的空白.

(6)htmlspecialchars

将字符串中的HTML特殊字符换成它们的名字,例如"<"变成"<".

(7)nl2br

在字符串中的每一个回车前面加上"<BR>".

(8)AddSlashes,StripSlashes

分别给字符串中需要加上"\"才能用于数据库查询的字符加上和去掉"\".

(9)parse_str

将"name1=value1&name2=value2&..."类型的字符串分析成一些变量.

例如:
parse_str("a=1&b=2");

生成a与b两个变量,值分别为1,2.

如果有两对名字/值的名字部分相同,则后一个的值覆盖前一个的.

如果这两对的名字尾部都有"[]",例如"a[]=1&a[]=2",则生成数组a,两个元素分别为1,2

好了文章写了一大堆了,希望这些字符串函数的实例能给你带来帮助。

class GetImage {

 

var $source;

var $save_to;

var $quality;

 

function download($method = 'curl') {

    $info = @GetImageSize($this->source);

    $mime = $info['mime'];

   

// What sort of image?

    $type = substr(strrchr($mime, '/'), 1);

    switch ($type){

        case 'jpeg':

            $image_create_func = 'ImageCreateFromJPEG';

            $image_save_func = 'ImageJPEG';

            $new_image_ext = 'jpg';

       

            // Best Quality: 100

            $quality = isSet($this->quality) ? $this->quality : 100;

            break;

       

        case 'png':

            $image_create_func = 'ImageCreateFromPNG';

            $image_save_func = 'ImagePNG';

            $new_image_ext = 'png';

       

            // Compression Level: from 0  (no compression) to 9

            $quality = isSet($this->quality) ? $this->quality : 0;

            break;

       

        case 'bmp':

            $image_create_func = 'ImageCreateFromBMP';

            $image_save_func = 'ImageBMP';

            $new_image_ext = 'bmp';

            break;

       

        case 'gif':

            $image_create_func = 'ImageCreateFromGIF';

            $image_save_func = 'ImageGIF';

            $new_image_ext = 'gif';

 

            break;

       

        case 'vnd.wap.wbmp':

            $image_create_func = 'ImageCreateFromWBMP';

            $image_save_func = 'ImageWBMP';

            $new_image_ext = 'bmp';

            break;

       

        case 'xbm':

            $image_create_func = 'ImageCreateFromXBM';

            $image_save_func = 'ImageXBM';

            $new_image_ext = 'xbm';

            break;

       

        default:

            $image_create_func = 'ImageCreateFromJPEG';

            $image_save_func = 'ImageJPEG';

            $new_image_ext = 'jpg';

    }

   

    if(isSet($this->set_extension)){

        $ext = strrchr($this->source, ".");

        $strlen = strlen($ext);

        $new_name = basename(substr($this->source, 0, -$strlen)).'.'.$new_image_ext;

    }else{

        $new_name = basename($this->source);

    }

   

    $save_to = $this->save_to."/blog_insert_temp_".time().mt_rand(1,99).".".$new_image_ext;

    //输出对象 组成跟$_FILE变量一样 得到后自己和平常图片上传处理一样了

    $img_info['name'] = basename($this->source);

    $img_info['type'] = $mime;

    $img_info['size'] = 1000;

    $img_info['tmp_name'] = $save_to;

    $img_info['error'] = 0;

       

    if($method == 'curl'){

        $save_image = $this->LoadImageCURL($save_to);

    }elseif($method == 'gd'){

        $img = $image_create_func($this->source);

   

            if(isSet($quality)){

               $save_image = $image_save_func($img, $save_to, $quality);

            }else{

               $save_image = $image_save_func($img, $save_to);

            }

          

    }

         return $img_info;

    }

   

    function LoadImageCURL($save_to){

        $ch = curl_init($this->source);

        $fp = fopen($save_to, "wb");

       

        // set URL and other appropriate options

        $options = array(CURLOPT_FILE => $fp,

                         CURLOPT_HEADER => 0,

                         CURLOPT_FOLLOWLOCATION => 1,

                         CURLOPT_TIMEOUT => 60); // 1 minute timeout (should be enough)

       

        curl_setopt_array($ch, $options);

       

        curl_exec($ch);

        curl_close($ch);

        fclose($fp);

 

    }

}

[!--infotagslink--]

相关文章

  • jQuery实现非常实用漂亮的select下拉菜单选择效果

    本文实例讲述了jQuery实现非常实用漂亮的select下拉菜单选择效果。分享给大家供大家参考,具体如下:先来看如下运行效果截图:在线演示地址如下:http://demo.jb51.net/js/2015/js-select-chose-style-menu-codes/具体代码如...2015-11-08
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • jQuery实现下拉菜单滑动效果

    这篇文章主要为大家详细介绍了jQuery实现下拉菜单滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-09
  • jQuery实现有动画淡出效果的二级折叠菜单代码

    本文实例讲述了jQuery实现有动画淡出效果的二级折叠菜单代码。分享给大家供大家参考,具体如下:这里介绍jQuery实现有动画淡出效果的二级折叠菜单代码,相当不错,因考虑功能的实现,所以没有怎么美化,不过这样也好,可以给大家更...2015-10-21
  • jQuery实现可关闭固定于底(顶)部的工具条菜单效果

    本文实例讲述了jQuery实现可关闭固定于底(顶)部的工具条菜单效果。分享给大家供大家参考,具体如下:这是一款可关闭始终在页面底部的工具条菜单,浮动在页面顶部的大家见的比较多了,本款从形式上来说与其它的没什么差别,只是浮...2015-11-08
  • jQuery+PHP+MySQL二级联动下拉菜单实例讲解

    二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动。本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果。 实现效果:当选择大类时,小类下拉框里的选项内容也随着改...2015-10-30
  • js如何构造elementUI树状菜单的数据结构详解

    由于业务需要,要求实现树形菜单,且菜单数据由后台返回,下面这篇文章主要给大家介绍了关于js如何构造elementUI树状菜单的数据结构的相关资料,需要的朋友可以参考下...2021-05-13
  • Vue.js 递归组件实现树形菜单(实例分享)

    本文主要对介绍利用Vue.js 的递归组件,实现了一个最基本的树形菜单。具有很好的参考价值,下面就跟着小编一起来看下吧...2017-01-09
  • jQuery实现精美的多级下拉菜单特效

    这是一款精美的多级下拉菜单美化,可以完美替代“select”来实现下拉菜单的效果。而且支持多级菜单,有加载等待效果,有层级分类展示。复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "ht...2015-03-15
  • jquery插件实现悬浮的菜单

    这篇文章主要为大家详细介绍了jquery插件实现悬浮的菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-23
  • JS实现不使用图片仿Windows右键菜单效果代码

    本文实例讲述了JS实现不使用图片仿Windows右键菜单效果代码。分享给大家供大家参考,具体如下:这里演示JS不使用图片仿Windows右键菜单效果,这款代码灵活使用了文鼎字,配合CSS和JS做出了这个和系统右键菜单很相似的东东。...2015-10-23
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • jQuery实现的导航下拉菜单效果

    这篇文章主要介绍了jQuery实现的导航下拉菜单效果,涉及jQuery响应鼠标事件动态操作页面元素的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2016-07-06
  • jquery实现树形菜单完整代码

    这篇文章主要介绍了jquery实现树形菜单完整代码,需要的朋友可以参考下...2016-01-02
  • php创建无限级树型菜单

    写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.。 大概步骤如下: step1:到数据库取数据,放到一个数组, step2:把数据转化为一个树型状的数组, step3:把这个树型状的数组转为html代码。...2015-11-08
  • C#自定义控件添加右键菜单的方法

    这篇文章主要介绍了C#自定义控件添加右键菜单的方法,本文用到control控件,专门自定义右键菜单,下面小编给大家整理下,有需要的小伙伴可以来参考下...2020-06-25
  • winform树形菜单无限级分类实例

    本文介绍了“winform树形菜单无限级分类实例”,需要的朋友可以参考一下...2020-06-25
  • 最简单js代码实现select二级联动下拉菜单

    这个是简单也是最基本的下拉框联动的示例,这个示例主要针对那些只有二级联动,且第一级是固定的选项,第二级的内容也比较简单,不刷新的联动,感兴趣的小伙伴们可以参考一下...2016-04-19
  • javascript+css3 实现动态按钮菜单特效

    这篇文章主要介绍了javascript+css3 实现动态按钮菜单特效的相关资料,需要的朋友可以参考下...2016-02-12