preg_match много слов в простой форме

$text = text1 text2 text3 text4

if (preg_match('/text1/',$text ))
$replacetext1= 'replacetext1';
else
$replacetext1='';

if (preg_match('/text2/',$text ))
$replacetext2= 'replacetext2';
else
$replacetext2='';

if (preg_match('/text3/',$text ))
$replacetext3= 'replacetext3';
else
$replacetext3='';

if (preg_match('/text4/',$text ))
$replacetext4= 'replacetext4';
else
$replacetext4='';
result = replacetext1 replacetext2 replacetext3 replacetext4

Я хочу сделать с вводом и его автоматической заменой

text1 | replacetext1
text2 | replacetext2
text3 | replacetext3
text4 | replacetext4

FORMAT: KEYWORD|RESONSE-1|

есть ли простой способ заменить слово ??

0

Решение

Вы можете использовать поддержку массива str_replace:

$text = "text1 text2 text3";
$result = str_replace(["text1","text2","text3"], ["repl1", "repl2", "repl3"], $text);
0

Другие решения

Что-то вроде этого:

$text = "text4 text1 text2 text3";
$replace = [
'/\btext1\b/'         => 'replace1', //replace case sensitive
'/\btext2\b/i'         => 'replace2', //non-sensitive
'/\b(text3|text4)\b/i' => 'replace3', //replace both text3 and text4
];
$result = preg_replace(array_keys($replace), $replace, $text);

Главное здесь это \b или границы слова, это все, что не 0-9a-zA-Z_, что предотвращает частичное совпадение. Но в теории вы можете использовать любое регулярное выражение для любого из элементов в массиве. Что дает вам больше гибкости по сравнению с другими методами замены.

Выход:

 replace3 replace1 replace2 replace3

песочница

0

Одним из способов является использование метода «взорвать / взорвать» следующим образом:

$text = "text1 text2 text3 text4";
// define your replacement strings
$replace = [
'text1' => 'replace1',
'text2' => 'replace2',
'text3' => 'replace3',
'text4' => 'replace4',
];
$result = $text;
foreach($replace as $i => $v){
$result = implode($v, explode($i, $result ));
}
echo $result ;
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector