php - preg_match 电子邮件主题和正文

标签 php preg-match

我需要提取由 Joomla 中的表单生成的电子邮件的主题/正文。 我使用一些标签来为每种语言定义不同的主题/正文,例如:

{lang en}English Text{/lang}
{lang it}Italian Text{/lang}
{lang fr}French Text{/lang}

我有以下代码用于从不同语言的主题中剥离文本:

$msgSubject = $template->subject;           
    if ($language=='it-IT')
    {                                               
    preg_match('~{lang it}([^{]*){/lang}~i', $msgSubject, $match);
    $msgSubject=($match[1]);
    }
    elseif ($language=='en-GB')
    {
    preg_match('~{lang en}([^{]*){/lang}~i', $msgSubject, $match);
    $msgSubject=($match[1]);
    }

其他语言依此类推。 它非常适合纯文本的电子邮件主题。 如果我在 Body 上做同样的事情,它是一个包含 HTML 元素的字符串,如 p 和 br 等等,它不起作用...... 代码示例:

$msgBody = $template->body;

                    if ($language=='it-IT')
                    {
                    preg_match('~{lang it}([^{]*){/lang}~i', $msgBody, $match);
                    $msgBody=($match[1]);

                    }
                     elseif ($language=='en-GB')
                    {
                    preg_match('~{lang en}([^{]*){/lang}~i', $msgBody, $match);
                    $msgBody=($match[1]);
                    }

它什么也不输出。我应该在 preg_match 函数中更改什么以避免 HTML 标签大量出现?

最佳答案

我已经检查了你的代码,它也可以与 html 代码一起正常工作。但我认为 $msgBody 包含您在 joomla 中使用的多个标签。 所以你应该使用下面的代码

preg_match_all('~{lang it}([^{]*){/lang}~i', $msgBody, $match);

因为 preg_match 仅匹配第一次出现。

关于php - preg_match 电子邮件主题和正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36618658/

相关文章:

php - 安全原因 url 部分隐藏?

php - 从数组中删除符合 PHP 中特定条件的项目

php - 仅替换文件形式 preg_replace 中的特定组

php - preg_match : number-alphabets and commas only

php - 允许的命名子模式字符

php - preg_match php 匹配 javascript

php - 在表单上添加新的同时保留以前的

php - 如何更改此正则表达式以便它选择具有多个 img 的段落元素

php - php中的命名空间

php - 无法使用 MAMP PRO 从 php 邮件功能发送邮件