2016-02-01 3 views
1

Я хочу создать функцию для фильтрации сообщений пользователей.PHP: str_replace multiple cases

$postcontent = str_replace(("rn", '<br>'), ("[B]", '<b>'), self::$post); 

Пробовал использовать его для замены str несколькими строками, но вы можете видеть, что это неправильно. Я также пробовал:

$postcontent = str_replace(
array("rn", '<br>'), 
array("[B]", '<b>'), 
$self::$post 
); 

Что не так?

+1

Как определить, что это неправильно? – RomanPerekhrest

+0

Да, первый ошибочен, потому что вы не определили его как массив, а следующий неверен, потому что вы определили '$ self' вместо' self' и даже не можете сказать, что он идеален, потому что не знаю что содержит переменная '$ post' –

ответ

1

Я использовал то, что вы делаете, со своей собственной строкой.
Я создал 2 массива, один с, чтобы найти и один с заменами, а именно:

$search = ["fruit", "veg"]; 
$replace = ["pizza", "chips"]; 

здесь, я тогда создал строку для поиска:

$string = "Eating fruit and veg is good for you!"; 

а затем с помощью str_replace как таковой :

print str_replace($search, $replace, $string); 

Я получил этот результат:

Ешьте пиццу и чипсы!

Как вы можете видеть, использование массива в пределах функции str_replace работает!

0

Первый аргумент для str_replace, строка или массив строк, всегда относится к игле.

Второй аргумент для str_replace, строка или строковый массив, всегда относится к замене.

Он должен работать так:

str_replace(
    ["rn", "[B]"], 
    ["<br>", "<b>"], 
    self::$post 
); 

В случае, если вы задаетесь вопросом, [...] идентичен array(...), хотя он является новым и меньше используется.