一、正则表达式基础知识

在开始之前,我们需要了解一些正则表达式的基础知识:

  • 字符匹配. 表示匹配除换行符以外的任意字符,[] 表示匹配方括号内的任意一个字符,例如 [a-z] 匹配任意小写字母。
  • 数量限定* 表示匹配前面的子表达式零次或多次,+ 表示匹配前面的子表达式一次或多次,? 表示匹配前面的子表达式零次或一次。
  • 定位符^ 表示匹配输入字符串的开始位置,$ 表示匹配输入字符串的结束位置。

二、图片路径提取

1. 获取图片完整路径

$text = "图片地址:http://example.com/images/photo1.jpg";
$pattern = '/http[s]?:\/\/[^\s]+\.jpg/i';
$replacement = '';
$extractedPath = preg_replace($pattern, $replacement, $text);

echo $extractedPath; // 输出:http://example.com/images/photo1.jpg

2. 获取图片文件名

$pattern = '/http[s]?:\/\/[^\s]+\/([^\s\.]+)\.jpg/i';
$replacement = '$1';
$extractedFilename = preg_replace($pattern, $replacement, $text);

echo $extractedFilename; // 输出:photo1

三、图片路径编辑

1. 替换图片服务器地址

$pattern = '/http[s]?:\/\/example\.com\/images\/([^\/]+)/i';
$replacement = 'http://newserver.com/$1';
$editedText = preg_replace($pattern, $replacement, $text);

echo $editedText; // 输出:图片地址:http://newserver.com/images/photo1.jpg

2. 添加图片尺寸信息

$pattern = '/http[s]?:\/\/[^\s]+\/([^\/]+)/i';
$replacement = '$1_800x600.jpg';
$editedText = preg_replace($pattern, $replacement, $text);

echo $editedText; // 输出:图片地址:http://example.com/images/photo1_800x600.jpg

四、总结