php分割字符串并输出数组字符例子

 更新时间:2016年11月25日 15:40  点击:1352
在php中分割字符函数可以使用explode()函数,但是使用此函数必须要有一个规律了,如以|分开或以其它字符分开,这样我们就可以直接使用explode把字符串分成数组之后再利用for遍历输出,下面来看几个例子。

explode() 函数把字符串分割为数组。

语法

explode(separator,string,limit)

例子一

 代码如下 复制代码

<?php
$test='472347127,893372115,850965403';
$r=explode(",",$test);
for($i=0;$i<sizeof($r);$i++)
{ echo $i.".". $r[$i].""; }
?>

输出: 0.472347127 1.893372115 2.850965403

例子二

 代码如下 复制代码

<?php
$a="893372115,472347127,850965403" ;
$b=explode(",",$a);
foreach($b as $bb)
{ echo $bb.""; //print_r($b); }
?>

输出: 893372115 472347127 850965403 PHP


逗号 分割字符串

利用 explode 函数分割字符串到数组

 代码如下 复制代码

<?php

$source = "hello1,hello2,hello3,hello4,hello5";//按逗号分离字符串
$hello = explode(',',$source);

for($index=0;$index<count($hello);$index++){
echo $hello[$index];echo "</br>";
}

?>

split函数进行字符分割

 代码如下 复制代码

<?php

// 分隔符可以是斜线,点,或横线
$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date);
echo "Month: $month; Day: $day; Year: $year<br />n";
?>

在以前如果我们要实现php+ajax实现多域名跨域登录的话很多朋友都碰到无法正常跨域登录问题,下面我来给大家解决跨域名登录问题,有需要的参考。

该同步登陆需求需满足以下三个关键点:
1)A域名下登陆的用户,跳转到B域名下时实现同步登陆;
2)B域名下点击A域名下的退出链接,实现A域名与B域名的同时退出
3)用户直接访问B域名时,可以自动判断A域名下是否存在用户登录,如果存在,则实现B域名下的用户同步登陆。
首先解决跨域的同步登陆登出,有以下可行的解决思路:
1)两个域共享SESSION服务器,即统一的内存服务器,这样两个域下的SESSIONID会相同,会自动无缝实现同步登陆登出;
但该解决方案需要额外的硬件投入,并且需要懂这方面部署的技术人员
2)通过url传递sessionid
3)通过P3P协议获取跨域的SESSION
为解决该需求,我经过查询各种资料,并拟定了自己的一套解决方案,分享给大家,其要点如下:
1)当用户在A域名下登录后,访问A域名下网站时,会ajax请求B域下的js脚本文件,写入B域COOKIE及SESSION,实现B域下登录;
2)当用户在A域名下退出后,访问A域名下网站时,会ajax请求B域下的js脚本文件(同登录参数不同),清除B域COOKIE及SESSION,实现B域下登出;
3)当用户直接访问B域网页时,请求A域下脚本,判断A域下是否存在登录,如果存在,则将COOKIE及SESSION赋值到当前域的网页中,通过ajax实现当前域
COOKIE及SESSION的写入。
我将a域名设定为A域名;B域名设定为B域名。
以下是相关代码:

 代码如下 复制代码

#############a域名ApiController.php #################
 /*
  * 根据当前域(a域名)的cookie信息设置bstv域下的cookie及session
  * 如果为空,则清空处理
  * */
 function setckAction() {
  $clr = $this->_request->getParam("clr");
  $bts_user = ($clr) ? '' : urlencode($_COOKIE['bts_LOGGED_USER']);
  $this->view->assign("bts_user",$bts_user);
 }
 
 /*
  * 提供给bstv域下,获取当前域(a域名)的cookie及session
  * 以脚本变量返回给bstv浏览器端
  * */
 function getckAction() {
  header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
  echo 'var ck="'.$_COOKIE['bts_LOGGED_USER'].'";';
  echo 'var sess="'.$_SESSION['user']['uid'].'";';
  exit();
 }
#############a域名index.php #################
##### 默认指定index.php为登录返回的页面
<script src="http://www.B域名/api/setck?bts_user={$bts_user}"></script>
############# B域名 api.php #################
 
 /*
  * 显示a域名域下的cookie及SESSION
  * 赋值到js变量
  * js 通过ajax写入cookie和session:如果a域名已退出,则bstv做退出处理
  * */
 function getbtsck() {
  include $this->template->getfile('api/getbtsck');
 }
 
 /*
  * a域名域下设置bstv域下的cookie及session
  * 如果为空,则清空处理
  * */
 function setck() {
  header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
 
  $bts_user = trim($_GET['bts_user']);
  if(!empty($bts_user)) {
   setcookie("bts_LOGGED_USER", urldecode($bts_user), time()+3600*24*365, "/", ".B域名");
   $this->cookieLoginLocal(urldecode($bts_user));
  } else {
   setcookie("bts_LOGGED_USER", $bts_user, '-1', "/", ".B域名");
   unset($_SESSION['uid']);
  }
 }
 
 function setsession() {
  $bts_user = trim($_POST['bts_user']);
  if(!empty($bts_user) && empty($_SESSION['uid'])) {
   setcookie("bts_LOGGED_USER", urldecode($bts_user), time()+3600*24*365, "/", ".B域名");
   $this->cookieLoginLocal(urldecode($bts_user));
  } else {
   echo 'uuunset';
   setcookie("bts_LOGGED_USER", $bts_user, '-1', "/", ".B域名");
   //unset($_SESSION['uid']);
  }
 }
 
 function cookieLoginLocal($cookieId){
  $cookieId = explode( '.', base64_decode($cookieId) );
  if ($cookieId[0] !== 'baitianshi' || empty($cookieId[1])) {
   return false;
  } else {
   return $this->loginLocal($cookieId[1],false,1);
  }
 }
 
 function loginLocal($uid,$password=false,$isuid=0) {
  $_SESSION['uid'] = $uid;
  return 1;
 }

############# B域名 getbtsck.html #################
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 <title>同步登陆</title>
 <script src="/js/jquery-1.8.1.min.js" type="text/javascript"></script>
    <script src="/api/getck"></script>
 <script language="javascript">
 function setck(bts_user) {
  $.post("/api/setsession",{bts_user:bts_user},function(re){ });}
  setck(ck);
    </script>
</head>
<body>
</body>
</html>

该方案尚存在的不足:
当用户直接访问B域时,需要加载一次该页面后,才能判断是否在A域登录,并写入当前域(B域)的SESSION

在php中URL跳转不管那种做法都离不开header函数,下面我就给各位整理一些常用的URL跳转实现程序与方式,有需要的朋友可参考一下。

1.header()函数

header()函数是PHP中进行页面跳转的一种十分简单的方法。header()函数的主要功能是将HTTP协议标头(header)输出到浏览器。

header()函数的定义如下:

void header (string string [,bool replace [,int http_response_code]])
可选参数replace指明是替换前一条类似标头还是添加一条相同类型的标头,默认为替换。

第二个可选参数http_response_code强制将HTTP相应代码设为指定值。 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转。注意:

1.location和“:”号间不能有空格,否则不会跳转。

2.在用header前不能有任何的输出。

3.header后的PHP代码还会被执行。例如,将浏览器重定向到linzl.com

 代码如下 复制代码

< ?php
//重定向浏览器
header("Location: http://www.111cn.net");
//确保重定向后,后续代码不会被执行
exit;
?> 


1、php跳转代码一句话式:

 代码如下 复制代码
<?php $url = $_GET['url']; Header("Location:$url"); ?>

注:假如保存为ad.php,即可实现ad.php?url=www.111cn.net跳转到集思网的效果
 
2、php跳转代码if判断式:

 代码如下 复制代码

if($_COOKIE["u_type"]){ header('location:register.php'); } else{ setcookie('u_type','1','86400*360');//设置cookie长期有效 header('location:zc.html'); }

注:保存为zc.php,当用户访问zc.php时,判断一个cookie是否存在,如果存在就跳转到register.php,如果不存在则创建cookie然后跳转到zc.html


URL重定向函数

 代码如下 复制代码

// URL重定向
function redirect($url, $time=0, $msg=”) {
//多行URL地址支持
$url = str_replace(array(“n”, “r”), ”, $url);
if ( empty($msg) )
$msg = “系统将在{$time}秒之后自动跳转到{$url}!”;
if (!headers_sent()) {
// redirect
if (0 === $time) {
header(‘Location: ‘ . $url);
} else {
header(“refresh:{$time};url={$url}”);
echo($msg);
}
exit();
} else {
$str = “<meta http-equiv=’Refresh’ content=’{$time};URL={$url}’>”;
if ($time != 0)
$str .= $msg;
exit($str);
}
}

上面的不能返回404状态,如果是页面跳转之后返回404状态代码我们可如下操作

 

 代码如下 复制代码

function getref()
{
 $url = @$_SERVER['HTTP_REFERER'];
 if( !empty( $url ) )
 {
  if( !strstr($url ,'111cn.net' ) && !strstr($url,'111cn.net'))
  {
   @header("http/1.1 404 not found");
   @header("status: 404 not found");
   include("404.html");//跳转到某一个页面,推荐使用这种方法
   exit();
  }
 }
 else
 {
  @header("http/1.1 404 not found");
  @header("status: 404 not found");
  include("404.html");//跳转到某一个页面,推荐使用这种方法
  exit();
 }
}

如果要做301也差不多

 代码如下 复制代码

<?php  
 $the_host = $_SERVER['HTTP_HOST'];
 $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
 if($the_host !== 'www.111cn.net')
 {
     //echo $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://www.111cn.net' . $_SERVER['PHP_SELF']  . $request_uri);
 }
?>

现在天气预报网站都提供了解api来调用了,我们可以直接调用并显示在自己的网站上,下面我来给大家分享几段调用天气预报信息的php实例程序吧。

js调用天气预报方法

中国气象台

 代码如下 复制代码
<iframe src="http://m.weather.com.cn/m/pn12/weather.htm " width="245" height="110" 
 marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" 
 scrolling="no"></iframe>

上面是使用了框架方法,不好改自己的格式风格

最简单办法

 代码如下 复制代码

<?php
header("content-type:text/html;charset=utf-8");
$weather = file_get_contents("http://www.weather.com.cn/data/sk/101280601.html");
echo $weather;
?>

html代码

 代码如下 复制代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gbk" />
<style type="text/css">
.all span {font:bold 30px/50px "宋体";color:red;}
</style>
<title>天气预报</title>
</head>
<body>
<div class="all">
这里是:<span class="place">城市</span>,
气温是<span class="temp">气温</span>,
风向:<span class="wind">风向</span>,
风力:<span class="windPower">风力</span>
</div>
<script type="text/javascript" src="http://127.0.0.1/jquery.js"></script>
<script type="text/javascript">
$(function () {
$.ajax({
//请求的地址
url : "http://127.0.0.1/weather.php",
//请求成功后执行的函数
success : function (data) {
//用eval()解析返回来的数据,将字符串转成JSON格式
var oD = eval((+data+));
//用jquery-1.8.2获取元素
var $place = $(".place"),
$temp = $(".temp"),
$wind = $(".wind"),
$windPower = $(".windPower");
//将返回来的数据放到相应的位置
$place.html(oD["weatherinfo"]["city"]);
$temp.html(oD["weatherinfo"]["temp"] + "°");
$wind.html(oD["weatherinfo"]["WD"]);
$windPower.html(oD["weatherinfo"]["WS"]);
}
});
})
</script>
</body>
</html>

上面是指定城市了,我们可以在自己网站选择城市,例子

 代码如下 复制代码
<?php
/**
* php 天气预报代码
* by www.111cn.net
*/
    if(!isset($_GET['q'])){
        //根据IP查询所在地
        $p = file_get_contents("http://www.jbxue.com/ip/?q={$_SERVER['HTTP_X_FORWARDED_FOR']}");
    }
    else{
        $p = $_GET['q'];
    }
    $k = 0;
    $encoding = mb_detect_encoding()($p);
    if($encoding != "UTF-8"){
        $p = mb_convert_encoding($p,"utf-8","gbk");
    }
    $p_arr = array(
       "01" => "北京",
      "02" => "上海",
      "03" => "天津",
      "04" => "重庆",
      "05" => "黑龙江",
      "06" => "吉林",
      "07" => "辽宁",
      "08" => "内蒙古",
      "09" => "河北",
      "10" => "山西",
      "11" => "陕西",
      "12" => "山东",
      "13" => "新疆",
      "14" => "西藏",
      "15" => "青海",
      "16" => "甘肃",
      "17" => "宁夏",
      "18" => "河南",
      "19" => "江苏",
      "20" => "湖北",
      "21" => "浙江",
      "22" => "安徽",
      "23" => "福建",
      "24" => "江西",
      "25" => "湖南",
      "26" => "贵州",
      "27" => "四川",
      "28" => "广东",
      "29" => "云南",
      "30" => "广西",
      "31" => "海南",
      "32" => "香港",
      "33" => "澳门",
      "34" => "台湾"
    );
 
    function find(&$item,$key,$data){
        global $k;
        if(preg_match("/$item/u",$data)){
           $k = $key;
        }
    }
 
    function get_data_arr($key){
        if(!file_exists("./data/city{$key}.xml")){
            $c =file_get_contents( "http://m.weather.com.cn/data5/city{$key}.xml" );
            file_put_contents("./data/city{$key}.xml",$c);
        }
        else{
            $c = file_get_contents("./data/city{$key}.xml");
        }
       $arr = explode(",",$c);
       foreach($arr as $v){
           $data = explode("|",$v);
           $ret[$data[0]] = $data[1];
       }
       return $ret;
    }
 
    array_walk($p_arr,'find',$p);
    array_walk(get_data_arr($k),'find',$p);
    array_walk(get_data_arr($k),'find',$p);
    $ccode = get_data_arr($k);
    echo file_get_contents("http://m.weather.com.cn/data/{$ccode[$k]}.html");
?>

还有很多像可以调用更详细的天气信息的我们这里就不介绍了,大家可到天气网站去看他们提供的api接口 。

 

对于普通数据排序我们直接使用系统自带数组排序函数即可,如果是关系数组排序你知道如何操作吧?下面来给各位整理了几个例子大家一起来看看吧。

参数说明:$data 目标数组 $key 排序字段, $sort 排序规则

 代码如下 复制代码

function getSortArray($data,$key,$sort='ASC')
{
    if(!is_array($data))
    {
       return false;
    }
       
    $len = count($data);
   
    for($k=1; $k<$len; $k++)
    {
      for($j=$len-1,$i=0;$i<$len-$k;$i++,$j--)
      {
        if(strtoupper($sort) == 'DESC')
        {
           $flag = $data[$j][$key]>$data[$j-1][$key];
        }
        else
        {
           $flag = $data[$j][$key]<$data[$j-1][$key];
        } 
   
        if($flag)
        {
          $tmp  = $data[$j];
          $data[$j]   = $data[$j-1];
          $data[$j-1] = $tmp;
        }
      }
    }
    return $data;
}

使用方法:

$a = array(
       array('name'=>'stone','age'=>17,'sex'=>'男'),
       array('name'=>'sunny','age'=>28),
       array('name'=>'grass','age'=>16,'sex'=>'女'),
       array('name'=>'sea','age'=>15,'birthday'=>'1987-08-16')
     );
print_r(getSortArray($a,'age','desc'));

结果:
Array

(

   [0] => Array

       (

           [name] => sunny

           [age] => 28

       )

 

   [1] => Array

       (

           [name] => stone

           [age] => 17

           [sex] => 男

       )

 

   [2] => Array

       (

           [name] => grass

           [age] => 16

           [sex] => 女

       )

 

   [3] => Array

       (

           [name] => sea

           [age] => 15

           [birthday] => 1987-08-16

       )

 

)

不知道你有没有看懂呢?没懂我们再看两个数组排序例子

要对数组针对age字段进行排序,php自带的简单sort功能函数,显然都不能满足需求,因此需要自己写一个快速排序代码来实现相应的需求。

 代码如下 复制代码

<?php
/**
 * Description:获取中枢点的位置
 *
 * @param array $array            
 * @param int $left            
 * @param int $right            
 * @param string $field            
 * @return int
 */ 
function fetchArrayPivot (&$array, $left, $right, $field) 

    // 基准定义 
    $stand = $array[$left]; 
     
    // 遍历数组 
    while ($left < $right) { 
        while ($left < $right && $array[$right][$field] >= $stand[$field]) { 
            $right --; 
        } 
        if ($left < $right) { 
            $array[$left ++] = $array[$right]; 
        } 
         
        while ($left < $right && $array[$left][$field] <= $stand[$field]) { 
            $left ++; 
        } 
        if ($left < $right) { 
            $array[$right --] = $array[$left]; 
        } 
    } 
     
    // 获取中枢点位置 
    $array[$left] = $stand; 
     
    return $left; 

 
/**
 * Description:快速排序主程序
 *
 * @param array $array            
 * @param int $begin            
 * @param int $end            
 * @param string $field            
 */ 
function quickSort (&$array, $begin, $end, $field) 

    // 变量定义 
    $pivot = null; 
     
    if ($begin < $end) { 
        $pivot = fetchArrayPivot($array, $begin, $end, $field); 
        quickSort($array, $begin, $pivot - 1, $field); 
        quickSort($array, $pivot + 1, $end, $field); 
    } 
}
2,调用示例:
 

<?php 
$array = array( 
        array( 
                'name' => "xiao", 
                'age' => 3 
        ), 
        array( 
                'name' => 'wang', 
                'age' => 1 
        ), 
        array( 
                'name' => 'chen', 
                'age' => 2 
        ), 
        array( 
                'name' => 'zhengyi', 
                'age' => 4 
        ), 
        array( 
                'name' => 'chai', 
                'age' => 14 
        ) 
); 
 
$begin = getTime(); 
quickSort($array, 0, count($array) - 1, 'age'); 
print_r($array); 
$end = getTime(); 
$spend = $end - $begin; 
 
echo "花费时间为:".$spend."秒n"; 
 
function getTime() 

    list($msec, $sec) = explode(" ", microtime()); 
    return (float)$msec + (float)$sec; 
}

[!--infotagslink--]

相关文章

  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • C#二维数组基本用法实例

    这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • C#数组的常用操作方法小结

    Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
  • C# 拷贝数组的几种方法(总结)

    下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • PHP 二维数组根据某个字段排序的具体实现

    本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
  • php 中英文混合字符串截取

    文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25