1

我有一个字符串

<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 来完成,但是,出于好奇,我想知道如何用正则表达式来实现。

此外,如果这里有人可以帮助我提供一些关于正则表达式的好文章、提示和技巧或任何有助于我们理解如何学习正则表达式的东西,那就太好了。

4

3 回答 3

2

尝试这个:

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

正则表达式可视化

于 2013-11-13T11:51:07.820 回答
2

尝试:

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

演示

regex101.com 是一个很好的网站,您可以在其中学习和练习正则表达式。在那里看到你的解释。您还可以进行测验测试。

于 2013-11-13T11:49:37.773 回答
1

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

print preg_replace('/"cid:(.+)@[a-zA-Z0-9\.]+"/', '$1', $string);
于 2013-11-13T12:13:38.533 回答