0

所以我正在做一些背景知识。我正在使用包含大量姓名和电子邮件列表的 Excel 电子表格,并根据一系列过滤器向它们发送列表的较小子集。为了完成过滤,我将每个 Excel 行分解为 JSON 数组并将其放入 DOM 中,然后使用 Javascript/jQuery 填充一些隐藏字段。

完成所有过滤后,我有大约十几个逗号分隔的列表,然后在发布表单时使用 PHP explode 将其转换回数组。我需要能够使用特定于该人的数据来切换电子邮件正文中的一些变量。在不涉及太多细节和冒着让你困惑的风险的情况下,我基本上需要用 PHP 发布的数组中的值替换电子邮件正文中的一些值。

我将发布的数据拉入并使用以下代码将它们转换为数组:

//Bring in Hidden fields - turn into arrays
$companies = explode(",", $_POST['companies']);
$kw_signed = explode(",", $_POST['kw_signed']);
$header_rows = explode(",", $_POST['header_rows']);
$first_names = explode(",",$_POST['first_names']);
$emails = explode(",",$_POST['emails']);
$full_names = explode(",",$_POST['full_names']);
$markets = explode(",",$_POST['market']);
$zones = explode(",",$_POST['zones']);
$cities = explode(",",$_POST['cities']);
$states = explode(",",$_POST['states']);
$zipcodes = explode(",",$_POST['zipcodes']);
$p_factors = explode(",",$_POST['perf_factor']);

在我创建了一堆数组之后,我使用 for 循环遍历数组并使用 foreach 将电子邮件正文中的变量替换为它们各自的值,如下所示:

for($i=0; $i<$count; $i++) {
    //Create temp variable for body temp    
    $body_temp = $email_text;   
    //Replace header strings with value
    foreach($header_rows as $header) {
        if($header == '{first_name}') {
            $body_temp = str_replace($header, $first_name[$i], $body_temp);
        } else if($header == '{email}') {
            $body_temp = str_replace($header, $emails[$i], $body_temp);
        } else if($header == '{company}') {
            $body_temp = str_replace($header, $companies[$i], $body_temp);
        } else if($header == '{zone}') {
            $body_temp = str_replace($header, $zones[$i], $body_temp);
        } else if($header == '{market}') {
            $body_temp = str_replace($header, $markets[$i], $body_temp);
        } else if($header == '{city}') {
            $body_temp = str_replace($header, $cities[$i], $body_temp);
        } else if($header == '{state}') {
            $body_temp = str_replace($header, $states[$i], $body_temp);
        } else if($header == '{zip}') {
            $body_temp = str_replace($header, $zipcodes[$i], $body_temp);
        } else if($header == '{facility_type}') {
            $body_temp = str_replace($header, $facility_type[$i], $body_temp);
        }
    }

所以,现在到了这个问题。
如何更有效地进行替换?
我是否使用包含信息的数组创建一个对象并循环遍历数组以替换每个发布名称的对象变量,或者我是否完全以错误的方式进行此操作?任何见解将不胜感激

4

1 回答 1

0

您可以按以下方式进行替换

for($i=0; $i<$count; $i++) {
    //Create temp variable for body temp    
    $body_temp = $email_text;
    $body_temp = str_replace(array('{firsname}','{email}'), array($first_name[$i],$emails[$i]), $body_temp);  
}
于 2012-09-27T12:34:53.513 回答