Как заменить все вхождения двух подстрок с помощью str_replace ()?

В настоящее время у меня есть этот код, который заменяет любой двойной пробел с <br />,

Работает как положено:

<tr class="' . ($counter++ % 2 ? "odd" : "even") . '">
<td>Garments:</td>
<td>' . str_replace('  ', '<br /><br />', trim($result['garment_type'] ) ) . '</td>
</tr>

Однако я хочу сделать другое str_replace() на той же строке, чтобы заменить любые пробелы символом трубы |,

Я попытался дублировать код, но это просто создает другой TD для меня.

Любая помощь будет оценена.

0

Решение

Порядок массива имеет значение, иначе вы получите <br|/> вместо <br /> так что постарайтесь:

str_replace(array(' ','||'), array('|','<br /><br />'), trim($result['garment_type'] ));

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

echo str_replace(array(' ','||'), array('|','<br /><br />'), 'crunchy  bugs are so   tasty man');

Дает тебе:

crunchy<br /><br />bugs|are|so<br /><br />|tasty|man

В основном вы меняете каждый пробел в первую очередь | тогда вы меняете любой, у которого есть два рядом друг с другом (||) чтобы <br /><br />,

Если вы пойдете другим путем, вы измените два пробела на <br /><br /> а потом вы меняете отдельные пробелы на | и между <br /> есть место, так что вы в конечном итоге <br|/>,

РЕДАКТИРОВАТЬ с вашим кодом:

'<tr class="' . ($counter++ % 2 ? "odd" : "even") . '">
<td>Garments:</td>
<td>' . str_replace(array(' ','||'), array('|','<br /><br />'), trim($result['garment_type'] )) . '</td>
</tr>'
1

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

Вы можете передавать массивы в str_replace

$what[0] = '  ';
$what[1] = ' ';

$with[0] = '<br /><br />';
$with[1] = '|';

str_replace($what, $with, trim($result['garment_type'] ) )
4

Чтобы обойти проблемы с str_replace (пробел в <br /> заменяется |) пытаться strtr:

echo strtr(trim($result['garment_type']), array(' '=>'|', '  '=>'<br /><br />'));
1
По вопросам рекламы [email protected]