两个字符串之间的Preg_Replace字符串

时间:2013-11-13 11:46:05

标签: php regex preg-replace preg-match preg-match-all

我有一个字符串

<img alt="cid:image037.gif@01CDF804.C17FACA0" src="image021.gif" id="Picture_x0020_1" border="0" height="26" width="156">

我希望用 image037.gif 替换 cid:image037.gif@01CDF804.C17FACA0

我知道这可以用strpos和substr完成,但是,出于好奇心想知道如何用正则表达式实现这一点。

另外,如果有人能帮我提供一些关于正则表达式的好文章,提示和技巧或任何有助于我们理解如何学习正则表达式的文章,那就太棒了。

3 个答案:

答案 0 :(得分:2)

尝试:

echo preg_replace('~<img(.+?)alt="cid:(.+?)@.+?"(.*?)>~', '<img$1alt="$2"$3>', $string);

Demo

一个好的网站,你可以学习和练习正则表达式regex101.com。在那里查看您的explanation。您还可以尝试使用测验测试。

答案 1 :(得分:2)

试试这个:

echo preg_replace('#<img(.+?)alt="[^:]+:([^@]+)@[^"]+"(.*?)>#', '<img$1alt="$2"$3>', $string);

Regular expression visualization

答案 2 :(得分:1)

考虑到在自由文本中找不到模式(意味着在html标签之外)。

print preg_replace('/"cid:(.+)@[a-zA-Z0-9\.]+"/', '$1', $string);