php 截取指定2个字符之间的字符串例子

 更新时间:2016年11月25日 17:04  点击:2101
在php中只要判断字符串1与字符串2之前的一个stripos位置然后再使用substr开始截取就可以了,具体给各位介绍一个例子。

使用方法

 代码如下 复制代码

$keyword=’查找(计组实验)'

$need=getNeedBetween($keyword, ‘(' , ')' ); 那么$need=’计组实验';

先来发一个我在开发的时候经常用到的字符串截取函数。函数完成简单的从字符串($kw)截取两个指定的字符($mark1,$mark2)之间字符串,失败返回0,成功返回截取的字符串。

 代码如下 复制代码

<?php

function getNeedBetween($kw1,$mark1,$mark2){

$kw=$kw1;
$kw=’123′.$kw.’123′;
$st =stripos($kw,$mark1);
$ed =stripos($kw,$mark2);
if(($st==false||$ed==false)||$st>=$ed)
return 0;
$kw=substr($kw,($st+1),($ed-$st-1));
return $kw;
}

?>

如果你喜欢在MAC下开发PHP,那么我们可以用MAC OS X下的软件管理系统MacPorts来安装配置php的开发环境 PHP54+PHP FPM+NGINX+MYSQL5.5。

使用MacPorts配置PHP开发环境(PHP54+PHP FPM+NGINX+MYSQL55),首先需要安装port,访问:http://www.macports.org/install.php,直接下载源代码: https://distfiles.macports.org/MacPorts/MacPorts-2.1.3.tar.gz。

安装port:

1. tar xzvf MacPorts-2.1.3.tar.gz  解压

2. cd MacPorts-2.1.3

3. ./configure && make && sudo make install

这样就安装好port了。

4. vi ~/.bash_profile

按i键进入编辑方式,粘下以下文字:

export PATH=/opt/local/bin:$PATH

按ESC键退出编辑方式,按:键再输入wq保存退出。

现在我们就可以很方便地使用port了。

安装php:

1. port info php 列出所支持的php信息,可以根据需要来选对应的版本安装,我选php54这个版本。

2. sudo port install php54 php54-fpm php54-mysql php54-mbstring php54-mcrypt php54-sockets php54-curl 可以根据需要增加或者减少

3. cd /opt/local/etc/php54/

4. sudo cp ./php-fpm.conf.default ./php-fpm.conf

5. sudo cp ./php.ini-development ./php.ini 可以根据需要换成php.ini-production的

6. vi ~/.bash_profile 加上以下内容:

#php-fpm
alias fpm_start='sudo launchctl load -w /Library/LaunchDaemons/org.macports.php54-fpm.plist'
alias fpm_stop='sudo launchctl unload -w /Library/LaunchDaemons/org.macports.php54-fpm.plist'
alias fpm_restart='fpm_stop; fpm_start'

7. 打开个新的命令窗口,输入:fpm_start,php-fpm就开始运行了,可以用top命令查看或者用ps -e | grep php-fpm查看。

这样子php就已经搞定了。

nginx:

1. sudo port install nginx

2. vi ~/.bash_profile 加上以下内容:

# nginx
alias nginx_start='sudo launchctl load -w /Library/LaunchDaemons/org.macports.nginx.plist'
alias nginx_stop='sudo launchctl unload -w /Library/LaunchDaemons/org.macports.nginx.plist'
alias nginx_restart='nginx_stop; nginx_start;'

3. cd /opt/local/etc/nginx/

4. sudo cp fastcgi.conf.example fastcgi.conf 如此类推,把那些以.example为后缀的拷出一份没有.example为后缀的文件来。

5. sudo vi nginx.conf 找到

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 这段,内容改成这样子:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /opt/local/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

其实就是去掉前面的#号和改了一下fastcgi_param SCRIPT_FILENAME /opt/local/share/nginx/html$fastcgi_script_name;

6. nginx_start就可以启动了

7. cd /opt/local/share/nginx/html/

8. vi phpinfo.php 加入以下内容:

<?php phpinfo(); ?>

9. 通过浏览器访问:http://localhost/phpinfo.php 完成。

MYSQL:

1. sudo port install mysql55 再根据安装完成后的内容设置数据库

2. vi ~/.bash_profile 加上以下内容:

#mysql
alias mysql_start='sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql55-server.plist'
alias mysql_stop='sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql55-server.plist'
alias mysql_restart='mysql_stop; mysql_start'

3. mysql_start

4. sudo vi /opt/local/ect/mysql55/my.cnf 注掉# !include /opt/local/etc/mysql55/macports-default.cnf 这一行,再加上: [mysqld_safe] socket = /tmp/mysql.sock, 否则mysql命令可以连接,工具连不上。

PHP in_array() 函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE了,非常的好用了,下面我深入来为各位介绍in_array() 函数.

最近在用php写一段代码时,要用到判断某值是否在另外一组值中。而in_array 函数就是用来检查数组中是否存在某个值 。直接通过概念理解比较模糊,可以通过具体例子了解其作用。

语法:

bool in_array( mixed needle, array array [, bool strict] )

参数说明:
参数 说明
needle 需要在数组中搜索的值,如果是字符串,则区分大小写
array 需要检索的数组
strict 可选,如果设置为 TRUE ,则还会对 needle 与 array 中的值类型进行检查

例1:

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

以上代码的执行结果是:

Got Irix
第二个条件失败,因为 in_array() 是区分大小写的。

例2:

<?php
$europe = array("美国","英国","法国","德国","意大利","西班牙","丹麦");
if (in_array("美国",$europe)) {
echo "True";
}
?>

同上面一样,执行结果为True 。

例3:严格类型检查例子

<?php
$a = array('1.10', 12.4, 1.13);
if (in_array('12.4', $a, true)) {
    echo "'12.4' found with strict check ";
}
if (in_array(1.13, $a, true)) {
    echo "1.13 found with strict check ";
}
?>

其输出结果是:

1.13 found with strict check

例4:数组中套用数组

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
    echo "'ph' was found ";
}
if (in_array(array('f', 'i'), $a)) {
    echo "'fi' was found ";
}
if (in_array('o', $a)) {
    echo "'o' was found ";
}
?>

其输出结果为:

  'ph' was found
  'o' was found
其具体用法如下:

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。

注:自php5.4以后。数组定义由array()换成了array[] 。

网站或者广告联盟为了追踪用户访问记录,利用cookie是一个比较方便的技术实现,但是现在网民越来越关心cookie带来的隐私问题,那么现在一种新的技术“帆布指纹识别”或许可能替代。

【前言】

一般情况下,网站或者广告联盟都会非常想要一种技术方式可以在网络上精确定位到每一个个体,这样可以通过收集这些个体的数据,通过分析后更加精准的去推送广告(精准化营销)或其他有针对性的一些活动。Cookie技术是非常受欢迎的一种。当用户访问一个网站时,网站可以在用户当前的浏览器 Cookie中永久植入一个含有唯一标示符(UUID)的信息,并通过这个信息将用户所有行为(浏览了哪些页面?搜索了哪些关键字?对什么感兴趣?点了哪些按钮?用了哪些功能?看了哪些商品?把哪些放入了购物车等等)关联起来。

而随着网民对个人隐私的重视,Cookie越来越不受待见。不少安全工具甚至是浏览器都开始允许或引导用户关闭Cookie功能,比如很多主流浏览器都有一个“隐私模式浏览”功能。这样以来,网站就很难追踪用户行为了。但仍然有一些方法可以让网站去追踪每一个访问者的行为,比如通过flash cookie的方式也可以达到唯一标识和追踪的目的。

笔者近期注意到,国外媒体报道了一种非常难以摆脱的新型在线追踪工具被用来尾随从白宫官网到色情网站YouPorn.com的热门网站的访问者。经过分析,这个就是另一种比较新的访客追踪技术:“帆布指纹识别”技术,具体代码见附录6。这个技术的独特之处是:它不像通过Cookie或者Flash Cookie等之类的方式,你基本是无法屏蔽它的。

【原理分析】

笔者收集整理了很多知名站点上的类似代码,详见附录4,从这些“帆布指纹识别”代码可以看出,均使用到了HTML5专属标签的一个现状:在绘制canvas图片时,同样的canvas绘制代码,不同机器和浏览器绘制的图片特征是相同并且独一无二的,这样以来,提取最简单的md5值便可以唯一标识和跟踪这个用户。

产生canvas元素,获取绘画的内容,需要使用到canvas.toDataURL()方法,该方法返回的是图片内容的base64编码字符串。对于PNG文件格式,以块(chunk)划分,最后一块是一段32位的CRC校验,提取这段CRC校验码便可以用于用户的唯一标识:

function bin2hex(s) {
    var i, l, o = '', n;
    s += '';

    for (i = 0, l = s.length; i < l; i++) {
            n = s.charCodeAt(i) .toString(16);
            o += n.length < 2 ? '0' + n : n;
    }

    return o;
}

 

var canvas = document.createElement(‘canvas’);
var ctx = canvas.getContext(’2d’);
var txt = ‘http://chenpeng.info/’;
ctx.textBaseline = “top”;
ctx.font = “14px ‘Arial’”;
ctx.textBaseline = “chenpeng.info”;
ctx.fillStyle = “#f60″;
ctx.fillRect(125,1,62,20);
ctx.fillStyle = “#069″;
ctx.fillText(txt, 2, 15);
ctx.fillStyle = “rgba(102, 204, 0, 0.7)”;
ctx.fillText(txt, 4, 17);
var b64 = canvas.toDataURL().replace(“data:image/png;base64,”,”");
var bin = atob(b64);
var crc = bin2hex(bin.slice(-16,-12));
console.log(crc);

ab99cca6

chrome隐身模式测试:

 

image

 

同一机器的chrome浏览器,无论正常模式还是隐身模式,得到的crc值始终一致。而对于不同机器得到的值是不同的,追踪效果显而易见。

看到这里,相信很多人想问,Why?为什么会出现这样的情况?同样的js代码,在不同设备的浏览器上,结果是唯一并且各不相同的。这到底是为什么?其实原因很简单,同样的HTML5 Canvas元素绘制操作,在不同的操作系统不同的浏览器上,产生的图片内容其实是不完全相同的。出现这种情况可能是有几个原因:

1、在图片格式上,不同web浏览器使用了不同的图形处理引擎、不同的图片导出选项、不同的默认压缩级别等。

2、在像素级别来看,操作系统各自使用了不同的设置和算法来进行抗锯齿和子像素渲染操作。

因此,即使是相同的绘图操作,最终产生的图片数据在hash层面上依然是不同的。这个具体代码层面,恐怕要去搞懂各个主流浏览器的实现和以及操作系统的渲染。笔者精力所限,短期很难给出。大家可以自行摸索下,欢迎交流J

【后话】

HTML5千变万化,利用canvas 这一特性来实现用户追踪,目前并没有好的对抗方案,未来也只能依靠广大浏览器厂商自行了断,实现canvas绘图机制的随机化或许可以很好的保护用户隐私,防止被追踪。

文中涉及到的代码和技术细节,只限用于技术交流,切勿用于非法用途。另外,如果想要研究更多的用户追踪技术,推荐去研究下大名鼎鼎的专注于访客追踪的开源项目:evercookie【附录5】,这个猥琐的小工具,通过几乎所有你想到和想不到的方式(Cookie、Flash、 Silverlight、Web History、HTTP ETags、Web cache、window.name caching、userData storage、HTML5、甚至是java的漏洞等)来跟踪访问网站的用户行为。

SQLite是一款小巧轻型的数据库,支持的SQL语句不会逊色于其他数据库,支持的程序语言有Tcl、C#、PHP、Java等。现在我们来学习在PHP中如何使用SQLite。

一、如何建立文件夹:

SQLite会自动判断,文件夹是否存在,如果不存在才会建立。

try{
$db_conn = new PDO('sqlite:mydb.sqlite');
}catch(PDOException $e){
echo 'Error';
}

$stmt = "CREATE TABLE mytable(id, user)";
$db_conn->exec($stmt);

二、如何写入文件:

使用方式和 MySQL 差不多。

$stmt = "INSERT INTO mytable(id, user) VALUES('1', 'AAA')";
$db_conn->exec($stmt);

三、如何使用资料:

使用方式和 MySQL 差不多。

$sth = $db_conn->prepare("SELECT id, user FROM mytable");
$sth->execute();
while($row = $sth->fetch(PDO::FETCH_ASSOC)){
echo $row['id'].':'.$row['user'].'';
}

[!--infotagslink--]

相关文章

  • C#中截取字符串的的基本方法详解

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

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

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • Linux下PHP安装curl扩展支持https例子

    安装curl扩展支持https是非常的重要现在许多的网站都使用了https了,下面我们来看一篇关于PHP安装curl扩展支持https例子吧。 问题: 线上运行的lamp服务器,默认yu...2016-11-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • 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 中英文混合字符串截取

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

    这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 解决vue字符串换行问题(绝对管用)

    这篇文章主要介绍了解决vue字符串换行问题(绝对管用),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-06
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 【C#基础】Substring截取字符串的方法小结(推荐)

    这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25