我有一个字符串
<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完成,但是,出于好奇心想知道如何用正则表达式实现这一点。
另外,如果有人能帮我提供一些关于正则表达式的好文章,提示和技巧或任何有助于我们理解如何学习正则表达式的文章,那就太棒了。
答案 0 :(得分:2)
尝试:
echo preg_replace('~<img(.+?)alt="cid:(.+?)@.+?"(.*?)>~', '<img$1alt="$2"$3>', $string);
一个好的网站,你可以学习和练习正则表达式regex101.com。在那里查看您的explanation。您还可以尝试使用测验测试。
答案 1 :(得分:2)
试试这个:
echo preg_replace('#<img(.+?)alt="[^:]+:([^@]+)@[^"]+"(.*?)>#', '<img$1alt="$2"$3>', $string);
答案 2 :(得分:1)
考虑到在自由文本中找不到模式(意味着在html标签之外)。
print preg_replace('/"cid:(.+)@[a-zA-Z0-9\.]+"/', '$1', $string);