关于preg_replace()函数

379 字
2 分钟
关于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

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

关于preg_replace()函数
https://kanochan.net/posts/3331/
作者
KanoChan
发布于
2023-05-01
许可协议
CC BY-NC-SA 4.0

评论区

文章目录