Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menggantikan Pembolehubah Pemegang Tempat dengan Cekap dalam Rentetan?

Bagaimanakah Saya Boleh Menggantikan Pembolehubah Pemegang Tempat dengan Cekap dalam Rentetan?

Susan Sarandon
Lepaskan: 2024-11-23 07:05:10
asal
303 orang telah melayarinya

How Can I Efficiently Replace Placeholder Variables in a String?

Mengoptimumkan "Menggantikan Pembolehubah Pemegang Tempat dalam Rentetan"

Seseorang mungkin menghadapi pelbagai senario di mana mengenal pasti dan menggantikan pembolehubah pemegang tempat dalam rentetan adalah penting. Coretan kod ini menunjukkan fungsi penggantian dinamik, dynStr, yang mencari pasangan nilai kunci tertutup ({}) kurungan kerinting dan mengemas kininya dengan sewajarnya:

function dynStr($str,$vars) {
    preg_match_all("/\{[A-Z0-9_]+\}+/", $str, $matches);
    foreach($matches as $match_group) {
        foreach($match_group as $match) {
            $match = str_replace("}", "", $match);
            $match = str_replace("{", "", $match);
            $match = strtolower($match);
            $allowed = array_keys($vars);
            $match_up = strtoupper($match);
            $str = (in_array($match, $allowed)) ? str_replace("{".$match_up."}", $vars[$match], $str) : str_replace("{".$match_up."}", '', $str);
        }
    }
    return $str;
}

$variables = array("first_name" => "John","last_name" => "Smith","status" => "won");
$string = 'Dear {FIRST_NAME} {LAST_NAME}, we wanted to tell you that you {STATUS} the competition.';
echo dynStr($string,$variables); // Would output: 'Dear John Smith, we wanted to tell you that you won the competition.'
Salin selepas log masuk

Walau bagaimanapun, seperti yang diketengahkan oleh pengarang, pelaksanaan ini mengalami keterlaluan akses tatasusunan dan kelihatan intensif secara pengiraan. Seseorang boleh menyelaraskan proses ini dengan menghapuskan penggunaan ungkapan biasa dan melaksanakan penggantian rentetan ringkas berdasarkan pasangan nilai kunci dalam tatasusunan "vars":

$variables = array("first_name" => "John","last_name" => "Smith","status" => "won");
$string = 'Dear {FIRST_NAME} {LAST_NAME}, we wanted to tell you that you {STATUS} the competition.';

foreach($variables as $key => $value){
    $string = str_replace('{'.strtoupper($key).'}', $value, $string);
}

echo $string; // Dear John Smith, we wanted to tell you that you won the competition.
Salin selepas log masuk

Pendekatan ini membuang traversal tatasusunan bersarang yang tidak perlu dan memperkemas proses penggantian, menghasilkan kod yang lebih bersih dan cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan Pembolehubah Pemegang Tempat dengan Cekap dalam Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan