strtr vs str_replace: متى تستخدم وظائف الاستبدال المختلفة
في PHP، يمكن لكل من وظائف strtr وstr_replace إجراء عمليات استبدال السلسلة. ومع ذلك، فإن اختيار الوظيفة المناسبة يعتمد على متطلبات محددة وحالات الاستخدام.
التباين في أمر الاستبدال
على الرغم من أن الإخراج الناتج قد يبدو متطابقًا في بعض الحالات، إلا أن هناك فرق دقيق بين الوظيفتين:
echo strtr('test string', 'st', 'XY'); // "YeXY XYring" echo str_replace(array('s', 't'), array('X', 'Y'), 'test string'); // "YeXY XYring"
يستبدل strtr السلاسل الفرعية من اليمين إلى اليسار، بينما يستبدل str_replace من اليسار إلى اليمين. يصبح هذا الاختلاف واضحًا عند استبدال السلاسل الفرعية المتداخلة:
echo strtr('1 2 3 3', '1 2 3', 'XYZ'); // "1 2 3 Z" echo str_replace(array('1 2 3', '1 2'), array('XYZ', 'AB'), '1 2 3 3'); // "ABXYZ"
استبدال مفاتيح المصفوفات مقابل سلاسل فرعية متعددة
هناك تمييز آخر يكمن في كيفية التعامل مع المصفوفات البديلة:
$arr = array("1" => "A", "2" => "B", "3" => "C"); echo strtr('123', $arr); // "ABC" echo str_replace(array_keys($arr), array_values($arr), '123'); // "ABC"
في هذه الحالة، تستبدل كلتا الدالتين الأحرف بقيم المصفوفة المقابلة لها. ومع ذلك، يتطلب strtr مصفوفة ترابطية تحتوي على أزواج قيمة المفتاح، بينما يمكن أن يعمل str_replace على مصفوفات بسيطة من السلاسل الفرعية والبدائل. طول السلسلة الفرعية التي يتم استبدالها، بترتيب تنازلي. في المقابل، يقوم str_replace بمعالجة عمليات الاستبدال بالترتيب المحدد في مصفوفة الاستبدال. يمكن أن يؤدي هذا إلى نتائج مختلفة، كما هو موضح في المثال التالي:
$text = "PHP: Hypertext Preprocessor"; $text_strtr = strtr($text, array("PHP: المعالج المسبق للنص التشعبي" => "PHP", "PHP" => "PHP: المعالج المسبق للنص التشعبي")); $text_str_replace = str_replace(array("PHP", "PHP: المعالج المسبق للنص التشعبي"), array("PHP: المعالج المسبق للنص التشعبي", "PHP"), $text); var_dump($text_strtr); // السلسلة (3) "PHP" var_dump($text_str_replace); // string(27) "PHP: Hypertext Preprocessor"في الختام، يقدم كل من strtr وstr_replace طرقًا مختلفة لاستبدال السلسلة في PHP. إن فهم الفروق الدقيقة في السلوك وبناء الجملة سوف يرشدك في اختيار الوظيفة المناسبة لحالة الاستخدام المحددة الخاصة بك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3