我试图将此if语句作为以下内容: 如果第一个字符串位置是.png,那么从大海捞针获得$ png1,但如果第一个字符串位置是.jpg,那么从大海捞针获取$ jpg1,但如果是.gif,则从haystack获取$ gif1,否则如果没有找到它们然后字符串位置是.bmp所以得到$ bmp1
这是我尝试过的,但它没有正确解析:
<?php
// if first occurence is .png get $png1 needle from haystack
if (preg_match('#cid:([^"@]*).png@([^"]*)#', $html_part))
{ $find = '#cid:([^"@]*).png@([^"]*)#';
$replace1 = $png1;
$html_part = preg_replace($find, $replace, $html_part);
}
// if first occurence is .jpg get $jpg1 needle from haystack
elseif (preg_match('#cid:([^"@]*).jpg@([^"]*)#', $html_part))
{ $find = '#cid:([^"@]*).jpg@([^"]*)#';
$replace1 = $jpg1;
$html_part = preg_replace($find, $replace, $html_part);
}
// if first occurence is .gif then get $gif1 needle from haystack
elseif (preg_match('#cid:([^"@]*).gif@([^"]*)#', $html_part))
{ $find = '#cid:([^"@]*).gif@([^"]*)#';
$replace = $gif1;
$html_part = preg_replace($find, $replace, $html_part);
}
// if first occurence is .bmp then get $bmp1 needle from haystack
else
{ $find = '#cid:([^"@]*).bmp@([^"]*)#';
$replace = $bmp1;
$html_part = preg_replace($find, $replace, $html_part);
}
?>
添加了用于显示的换行符的示例$html_part
为:
<b>Bold Text.</b> <i>Italicized Text.</i> <u>Underlined Text.</u> Plain Unformatted Text.
<img width=183 height=183 id="Picture_x0020_3" src="cid:image001.png@01CCCB31.E6A152F0"
alt="Description: Description: Description: cid:image001.png@01CCC701.5A896430">
<img width=153 height=145 id="Picture_x0020_2" src="cid:image002.jpg@01CCCB31.E6A152F0"
alt="Description: Description: cid:image002.jpg@01CCCB1D.D3A29740"><img width=182 height=123
id="Picture_x0020_1" src="cid:image003.jpg@01CCCB31.E6A152F0"
alt="Description: Description: cid:image003.jpg@01CCCB1D.D3A29740">`
答案 0 :(得分:0)
您的正则表达式未正确包含,请将“#”替换为“/”。像这样:
preg_match('/cid:([^"@]*).png@([^"]*)/', $html_part)
<强>更新强>
我的错误,你的正则表达式很好。我会再看看。
您是否可以提供$html_part
的示例?
答案 1 :(得分:0)
文体提示:而不是多个正则表达式,其唯一的区别是文件扩展名,如何:
if (preg_match('#cid:([^"@]*).(gif|png|jpg|bmp)@([^"]*)#', $html_part)) {
$find = '#cid:([^"@]*).{$html_part[2]}@([^"]*)#';
^^^^^^^^^^^^^^^---captured file extension
并且只捕获找到的文件扩展名?这样可以节省4份几乎相同的正则表达式,在一个测试周期内完成所有这些工作
答案 2 :(得分:0)
代码中的错误只是
$replace1 = $png1;
$html_part = preg_replace($find, $replace, $html_part);
和
$replace1 = $jpg1;
$html_part = preg_replace($find, $replace, $html_part);
- 您设置$replace1
,但使用$replace
。