Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Gema dalam sintaks heredoc / nowdoc

Saya yakin ini yang ingin Anda lakukan, kelihatannya agak aneh:

$fn = escape($mt->from_name);
$time = escape(date("F d, Y - h:i a", strtotime($mt->st_time)));
$stc = nl2br(escape($mt->st_content));

//START EMAIL
User::sendNewticket($send_to, 'Maintenance Ticket ' . Input::get('st_id'), <<<TEXT
Hello -<br><br>
TEXT
        . Input::get('rec_message') . <<<TEXT2
<br><br>

<strong>Conversation:</strong><br><br>

$fn<br>
$time<br>
$stc<br>

TEXT2
);

Awal dari heredoc harus jadilah yang terakhir dalam satu baris, jadi setelah itu Anda drop down dan langsung masuk ke blok teks. Akhir dari heredoc harus menjadi satu-satunya yang ada di telepon, jadi untuk menggabungkannya, Anda harus menurunkan satu baris sebelum dapat menggunakan operator (. ). Anda juga tidak perlu menggunakan tanda kutip atau menambahkan operator saat berada di dalam heredoc.

Kenyataannya sangat tidak intuitif, bahkan penyorot Sintaks StackOverflow pun salah, <<<TEXT pertama berfungsi dengan baik ketika saya menjalankan ini:

$mt = new stdClass();
function escape($v){return $v;}
class User{static function sendNewTicket($a, $b, $c){echo $c;}}
class Input{static function get($a){return 'Got something';}}
$send_to = '';
$mt->from_name = 'Kitty';
$mt->st_time = '5th November';
$mt->st_content = <<<CONTENT
    Dear Judy,

        Lorem Dipsum and all that jazz.

        Toodles,
            Kitty.
CONTENT;

$fn = escape($mt->from_name);
$time = escape(date("F d, Y - h:i a", strtotime($mt->st_time)));
$stc = nl2br(escape($mt->st_content));

//START EMAIL
User::sendNewticket($send_to, 'Maintenance Ticket ' . Input::get('st_id'), <<<TEXT
Hello -<br><br>
TEXT
        . Input::get('rec_message') . <<<TEXT2
<br><br>

<strong>Conversation:</strong><br><br>

$fn<br>
$time<br>
$stc<br>

TEXT2
);

Ini menghasilkan:

Hello -<br><br>Got something<br><br>

<strong>Conversation:</strong><br><br>

Kitty<br>
November 05, 2014 - 12:00 am<br>
    Dear Judy,<br />
<br />
        Lorem Dipsum and all that jazz.<br />
<br />
        Toodles,<br />
            Kitty.<br>

Meskipun saya yakin itu akan terlihat lebih baik dengan data Anda.

Sunting:Dan sebagai Blizz sangat benar menunjukkan di bawah ini, jika Anda menyimpan rec_message menjadi variabel, Anda dapat menghindari penggabungan sama sekali:

$recMessage = Input::get('rec_message');
User::sendNewticket($send_to, 'Maintenance Ticket ' . Input::get('st_id'), <<<TEXT
Hello -<br><br>
$recMessage
<br><br>

<strong>Conversation:</strong><br><br>

$fn<br>
$time<br>
$stc<br>

TEXT
);

Edit 2 :Dengan pesan tambahan, Anda harus menggunakan sesuatu seperti ini untuk menyederhanakan email:

$messages = '';
foreach($st_messages->results() as $mt)
{

    $fn = escape($mt->from_name);
    $time = escape(date("F d, Y - h:i a", strtotime($mt->st_time)));
    $stc = nl2br(escape($mt->st_content));

    $messages .= <<<MESSAGE

$fn<br>
$time<br>
$stc<br><br>

MESSAGE;
}

$recMessage = Input::get('rec_message');
User::sendNewticket($send_to, 'Maintenance Ticket ' . Input::get('st_id'), <<<TEXT
Hello -<br><br>
$recMessage
<strong>Conversation:</strong><br><br>

$messages

Thanks,<br>
Support Team

TEXT
);
?>

Yang dengan beberapa teks dummy dasar menghasilkan:

Hello -<br><br>
Got something
<strong>Conversation:</strong><br><br>


Person<br>
November 11, 2014 - 12:00 am<br>
My message blah blah<br><br>

sdfasdf<br>
April 11, 2014 - 12:00 am<br>
My message asdfasdf blah blah<br><br>


Thanks,<br>
Support Team



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Objek kelas stdClass tidak dapat dikonversi ke string

  2. Di mana Klausa Untuk Memfilter Baris di MySQL

  3. MYSQL - PILIH IP v4/v6, inet_pton &bin2hex

  4. Bagaimana cara memesan kueri MySQL dengan kolom tertentu?

  5. Unggah file PDF ke mysql BLOB dengan menggunakan java.sql.PreparedStatement tanpa korupsi