我需要提取由 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/