一、正则表达式基础知识
在开始之前,我们需要了解一些正则表达式的基础知识:
- 字符匹配:
.表示匹配除换行符以外的任意字符,[]表示匹配方括号内的任意一个字符,例如[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