2014-01-23 4 views
2

Я хочу заменить несколько символов в строке с другими символами, т.е. сказать, < к a, > к b, ! к c, $ к d и т.д. Я хочу, чтобы достичь этой цели, используя preg_replace в PHP. Могу ли я сделать это только в одной строке кода, или я должен пойти для разрыва строки, создания массива, а затем заменить его?Как заменить несколько символов на несколько символов в php?

+0

Что? Я не получил то, что вы на самом деле хотите. –

+0

Почему вы не используете str_replace: http://php.net/str_replace –

ответ

9

Почему вы хотите использовать регулярное выражение для этого? просто используйте str_replace, что намного быстрее.

$replace = str_replace(array('<', '>', '!'), array('a', 'b', 'c'), $text); 
0

Использование strtr, который предназначен для этого вида перевода символов:

<?php 
$string = '<<!!'; 
echo strtr($string, '<>!$', 'abcd'); 
// Output: aacc 
4

Вы можете использовать простую замену, в вашем случае регулярного выражения будет излишними. Например:

$result = strtr($data, [ 
    '<' => 'a', 
    '>' => 'b', 
    '!' => 'c', 
    //e t.c. 
]); 

Alternative бы str_replace(), но я думаю, что ассоциативный массив выглядит более удобным для чтения.

-1

Это то, что я сделал бы.

$string = '<>!$'; 

$string = str_replace('<', 'a', $string); 
$string = str_replace('>', 'b', $string); 
$string = str_replace('!', 'c', $string); 
$string = str_replace('$', 'd', $string); 

echo $string; // abcd 
+0

@ У Филиппа есть ответ, который лучше подходит :) –

+0

Извините. Кажется, я не объяснил точный сценарий. Я получаю строку из $ _POST, которую я хочу настроить в некоторых местах, то есть от <<до 'ab', '>' до 'cd', '!' to 'ef', ':' to 'gh' и т. д. Мой коллега сказал мне сделать это, используя массивы в preg_replace. Кто-нибудь пробовал это раньше? – Dranzer

+0

@Dranzer Не имеет значения, как вы получаете строку. Использование замены preg является расточительным, поскольку это занимает больше времени. Если это не похоже на «назначение», в котором вам нужно использовать регулярное выражение, использование одного из вышеперечисленных решений будет намного более подходящим для ваших нужд. Попробуй! –

Смежные вопросы