PHP заменить все

#php #replace

#php #заменить

Вопрос:

У меня есть это в JavaScript:

 msg = msg.replace(/(:)|=)|:-)|(:)/gi, "<img src='img/ei/1.png' class='ei' />");
  

Есть ли аналогичный способ, которым я могу это сделать, но на PHP?

Заранее спасибо, энджи

Ответ №1:

Точно так же:

 $msg = preg_replace('/(:)|=)|:-)|(:)/i', "<img src='img/ei/1.png' class='ei' />", $msg);
  

Комментарии:

1. @enjikaka если ответ сработал, подумайте о том, чтобы принять его, чтобы в следующий раз, когда кто-то будет искать проблему такого типа, он мог быстро ее заметить.

2. Я пытался до того, как вы отправили сообщение, но это было до того, как это позволило мне (5 минут еще не прошло): P

3. @enjikaka: Для этого вам даже не нужно регулярное выражение. Смотрите ответ Шая Мишали. Старайтесь избегать регулярных выражений, когда можете, их трудно читать, и они медленные.

4. @greg0ire так что его будет быстрее?

Ответ №2:

Если я правильно понимаю, вы пытаетесь заменить экземпляры : smiley изображением. Вы могли бы сделать что-то вроде этого:

 <?php
    $str = "Hey there :)";

    str_replace(
      array(":)", "=)", ":-)", "(:"), 
      "<img src='img/ei/1.png' class='ei' />", 
      $str);
?>
  

Шай.

Комментарии:

1. Обратите внимание: это регулярное выражение, » используется для экранирования зарезервированных символов, таких как ‘)’.

2. Тем не менее, решение будет работать таким же образом только для 🙂 , =), 🙂 и 🙂

3. Вы пропустили смайлик «(:» в вашем выражении.

4. Deejavy, я думаю, что «Техника» достаточно понятна, Stackoverflow — это не написание кода для людей, это помощь им понять, какие методы использовать в их коде.

5. Регулярное выражение всегда считается немного «Медленнее», и я не думаю, что для такой простой операции оно вам действительно понадобится.