php正则字符串中图片地址表达式

 更新时间:2016年11月25日 17:10  点击:1310
在字符串中要获取得我们想要的图片地址是一件很容易的事情,这是相对于会正则表达式的朋友来说哈,下面我们来参考一下。

 

 代码如下 复制代码
<?php
$str='<p><img border="0" src="upfiles/2009/07/1246430143_1.jpg" alt=""/></p>';
$pattern="/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/";
preg_match_all($pattern,$str,$match);print_r($match);
?>

结果显示:

 代码如下 复制代码

Array
(
    [0] => Array
        (
            [0] => <img border="0" src="upfiles/2009/07/1246430143_1.jpg" alt=""/>
        )

    [1] => Array
        (
            [0] => upfiles/2009/07/1246430143_1.jpg
        )

)

一篇关于php 入门的朋友参考的关于文件和目录的各种操作函数与实例应用,有需要的朋友可以简单的参考一下。

本章可以算是上一章的延续,介绍了除文件实际内容之外的附加信息,包括文件的大小、目录、访问权限等。文件系统中的某些函数只在服务器为特定的系统中时才有效,例如更改符号链接的函数symlink(),设定文件访问权限的函数chmod(),设定目录访问权限的函数umask()等等这些只在Linux系统中有效,在Windows系统中无效。PHP5以后提供的DirectoryIterator类也封装了很多实用的目录方面的操作

 代码如下 复制代码

//------------- 采用DirectoryIterator类迭代目录中的文件 -------------
foreach(new directoryIterator('/usr/local/images') as $file){
 print $file->getPathname()."n";
}

//------------- PHP5之前版本的实现方式 -------------
$d = opendir('/usr/local/images') or die($php_errormsg);
while(false !==($f = readdir($d))){
 print $f."n";
}

closedir($d);文件信息函数
函数名 函数提供什么文件信息?
file_exists() 该文件是否存在
fileatime() 最后访问时间
filectime() 文件inode的最后修改时间
filegroup() 取得文件组(返回整数)
fileinode() 取得文件的信息节点数(返回整数)
filemtime() 取得文件数据块最后被写入的时间(返回Unix时间戳)
fileowner() 取得文件的所有者(返回用户ID)
fileperms() 取得文件的权限
filesize() 取得文件大小的字节数
filetype() 取得文件类型,可能返回 fifo,char,dir,block,link,file 和 unknown
is_dir() 判断给定文件名是否是一个目录
is_executable() 判断给定文件名是否可执行(自PHP5.0.0起可用于Windows)
is_file() 判断给定文件名是否为一个正常的文件
is_link() 判断给定文件名是否为一个符号连接
is_readable() 判断给定文件名是否可读
is_writable() 判断给定文件名是否可写

目录相关函数
函数名 函数提供什么文件信息?
mkdir() 创建一个新目录,第二个参数可用来设置访问权限
rmdir() 删除目录
rename() 重命名一个文件或目录

目录类相关方法
DirectoryIterator类封装了很多与目录相关的方法

方法名 函数提供什么目录信息?
isDir() 判断给定的DirectoryIterator item对象是否是一个目录
isDot() 判断当前的DirectoryIterator item对象是否是‘.’或‘..’
isFile() 判断当前的DirectoryIterator item对象是否是一个有效的文件
isLink() 判断当前的DirectoryIterator item对象是否是一个连接
isReadable() 判断当前的DirectoryIterator item对象是否可读
isWritable() 判断当前的DirectoryIterator item对象是否可写
isExecutable() 判断当前的DirectoryIterator item对象是否可执行
getATime() 获取当前Iterator item最后访问时间
getCTime() 获取当前Iterator item最后修改时间
getMTime() 获取当前Iterator item文件数据块最后被写入的时间
getFilename() 获取当前Iterator item文件名(带扩展名)
getPathname() 获取当前Iterator item路径名
getPath() 获取当前Iterator item路径名和文件名
getGroup() 获取当前Iterator item组ID
getOwner() 获取当前Iterator item拥有者ID
getPerms() 获取当前Iterator item权限
getSize() 获取当前Iterator item文件大小
getType() 获取当前Iterator item类型,可能是file,link or dir
getInode() 获取当前Iterator item的inode节点号

文件时间戳解惑
touch()函数修改文件的更新时间

fileatime()函数返回文件因为读或写被打开的最后时间

filemtime()函数返回文件内容被修改的最后时间

filectime()函数返回文件内容或元数据被修改的最后时间

获取文件信息
通过stat()可以获取一个包含文件相关信息的数组,与此函数类似的是fstat()函数,这个函数以一个文件句柄作为参数(由fopen()或popen()返回),lstat()用来获取符号或文件连接的信息。

数字索引 字符串索引 说明
0 dev 设备号
1 ino 信息节点号
2 mode 保护模式
3 nlink 被连接数目
4 uid 所有者用户ID
5 gid 所在组ID
6 rdev 设备类型,如果是inode设备的话
7 size 文件大小的字节数
8 atime 上次访问的时间(Unix时间戳)
9 mtime 上次修改的时间(Unix时间戳)
10 ctime 上次改变的时间(Unix时间戳)
11 blksize 文件系统IO的块大小
12 blocks 所占据块的数目

修改文件权限
chmod()函数修改文件的权限

chown()函数修改文件的所有者

chgrp()函数修改文件所属组

注意:上述3个函数在Windows系统中无效
获取文件名各部分信息
basename()函数可以取得文件名,dirname()函数可以取得路径名,pathinfo()取得目录名、完整文件名、扩展名、文件名(即不带扩展名)的关联数组,键名分别是[dirname]、[basename]、[extension]、[filename]

常通过dirname(__FILE__)的组合来获取当前目录路径(物理路径,常用在引用其他PHP文件上)

删除文件
用unlink()函数可以删除一个文件,如果删除失败将产生一个E_WARNING错误

提示:PHP5.0.0后此函数也可以用来删除远程文件,如FTP等
复制或移动文件
使用copy(old_dir,new_dir)函数可以复制文件,使用rename(old_dir,new_dir)移动文件,这里的new_dir是可以可以重命名文件名的。

模式匹配文件名列表(模糊查询)
如果希望像命令行那样查询出某个目录中的所有jpg文件(*.jpg),可以使用DirectoryIterator类的FileterIterator子类accept()方法或者glob()函数获取匹配的文件名。

//FileterIterator的实现代码

 代码如下 复制代码

class ImageFilter extends FilterIterator {
    public function accept() {
        return preg_match('@.(gif|jpe?g|png)$@i',$this->current());
    }
}
foreach (new ImageFilter(new DirectoryIterator('/usr/local/images')) as $img) {
    print "

n";
}

//-------------- glob函数的实现代码 ------------

 代码如下 复制代码
foreach (glob('/usr/local/docs/*.txt') as $file) {
   $contents = file_get_contents($file);
   print "$file contains $contentsn";

}递归目录中的文件
如果想获得一个目录及其子目录的文件大小,可以使用RecursiveDirectoryIterator(提供子目录获取的功能)和RecursiveIteratorIterator(平整化)

 代码如下 复制代码

$dir = new RecursiveDirectoryIterator('/usr/local');
$totalSize = 0;
foreach (new RecursiveIteratorIterator($dir) as $file) {
    $totalSize += $file->getSize();
}
print "The total size is $totalSize.n";

我们要做到给值就能快速的获取索引值的话,可以利用php array_values()函数,它可以快速简洁的帮我们找到想要的东西。下面我们来了解一下array_values() 函数的用法

array_keys() 函数返回包含数组中所有键名的一个新数组。

如果提供了第二个参数,则只返回键值为该值的键名。

如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。

语法
array_keys(array,value)参数 描述
array 必需。规定输入的数组。
value 可选。指定值的索引(键)。
strict 可选。与 value 参数一起使用。可能的值:

true - 根据类型返回带有指定值的键名。
false - 默认值。不依赖类型。
 

例子 1

 代码如下 复制代码

<?php
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a));
?>

输出:

Array ( [0] => a [1] => b [2] => c )

例子 2
使用 value 参数:

 代码如下 复制代码

<?php
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a,"Dog"));
?>

输出:

Array ( [0] => c)

例子 3
使用 strict 参数 (false):

 代码如下 复制代码

<?php
$a=array(10,20,30,"10");
print_r(array_keys($a,"10",false));
?>

输出:

Array ( [0] => 0 [1] => 3 )

例子 4
使用 strict 参数 (true):

 代码如下 复制代码

<?php
$a=array(10,20,30,"10");
print_r(array_keys($a,"10",true));
?>

输出:

Array ( [0] => 3)

对数组值进行排序除了我可以利用老师教的各种排序法外,我们的php就直接给你一个函数rsort()函数,用法非常简单,但只适合于数组啊。

rsort(array,sorttype)

参数 描述
array 必需。输入的数组。
sorttype 可选。规定如何排列数组的值。可能的值:

SORT_REGULAR - 默认。以它们原来的类型进行处理(不改变类型)。
SORT_NUMERIC - 把值作为数字来处理
SORT_STRING - 把值作为字符串来处理
SORT_LOCALE_STRING - 把值作为字符串来处理,基于本地设置*。 
 

 代码如下 复制代码

<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
rsort($my_array);
print_r($my_array);
?>

输出:

Array
(
[0] => Horse
[1] => Dog
[2] => Cat
)


其它参考

 代码如下 复制代码

$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);

本例中将把 volume 降序排列,把 edition 升序排列。

现在有了包含有行的数组,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序。

// 取得列的列表

 代码如下 复制代码
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
 

数据集合现在排好序了,结果如下:

 代码如下 复制代码

volume | edition
-------+--------
98 |       2
86 |       1
86 |       6
85 |       6
67 |       2
67 |       7

实际上真正在排序的时候还有很多方法可以使用,比如php的array数组自带的 arsort(),asort(),ksort(),krsort(),natsort(),natcasesort(),rsort(),usort(),array_multisort() 和 uksort()。

删除数组中一个元素我们是最常见的了,今天只简单的介绍一下关于删除最后一个元素哦,如果想删除数组中的任意一个,可以利用我第二种方法,再加个if(){ unset()}就可以实现了。

实例

 代码如下 复制代码

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);
?>
经过此操作后,$stack 将只有 3 个单元:

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)


array_pop() 弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL


用了函数我们还可以利用其它的方法如

 代码如下 复制代码

<?
$array = array('ccc','www.111cn.net','abc','111cn.net');
$arrtmp = array();
for( $i=0;$i<count($array)-1;$i++ )
{
 $arrtmp[] = $array[$i];
}
print_r($arrtmp);

Array
(
    [0] => ccc
    [1] => www.111cn.net
    [2] => abc
)

?>

[!--infotagslink--]

相关文章

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

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

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

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

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • PHP正则表达式取双引号内的内容

    取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

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

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • php 中英文混合字符串截取

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

    这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php 验证只能输入汉字、英语、数字的正则表达式

    正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25