-
关于preg_replace()函数
preg_replace 函数执行一个正则表达式的搜索和替换。
函数参数说明
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
$limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
$count: 可选,为替换执行的次数。这里有一篇文章,关于replacement如何使用。
一个实例
这个实例是在fancybox标签构建的时候看到的,研究了好一阵才明白其中的原理。
function fancybox ($content){
global $post;
$pattern = "/<img(.*?)src=('|\")([^>]*).(bmp|gif|jpeg|jpg|png|swf)('|\")(.*?)\/>/i";
$replacement = '<a$1href=$2$3.$4$5 data-fancybox="kanochan-images"$6><img$1src=$2$3.$4$5$6></a>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
原始文本
<img src="https://image.kanochan.net/2022/09/02/202209022213304.png" alt="image-20220902221322442" />
替换后的文本
<a href="https://image.kanochan.net/2022/09/02/202209022213304.png" data-fancybox="images" alt="image-20220902221322442" ><img src="https://image.kanochan.net/2022/09/02/202209022213304.png" alt="image-20220902221322442" /></a>
参数解析$1 -> (.?) --> .:匹配除了换行“\n”外的任何字符;:匹配前面的子表达式零次或多次;?:当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串 --> null
$2 --> ('|\") --> 匹配单引号或双引号 --> "
$3 -> ([^/>]*) --> 匹配除了“>”之外的任何字符,并进行零次或多次匹配 --> 结果是:https://image.kanochan.net/2022/09/02/202209022213304
$4 --> (bmp|gif|jpeg|jpg|png|swf) --> 匹配图片扩展名 --> png
$5 --> ('|\") --> 匹配单引号或双引号 --> "
$6 -> (.*?) --> 匹配信息同$1 --> null -
-
mount bind
mount bind 功能详解
mount bind 可为当前挂载点绑定一个新的挂载点。
mount bind 绑定后的两个目录类似于硬链接,无论读写 bar 还是读写 foo,都会反应在另一方,内核在底层所操作的都是同一个物理位置。
mkdir foo bar
mount --bind foo bar
foot文件夹里的内容挂载到bar文件夹中。
umount bar
取消挂载。 -
-