Как заменить все вхождения двух подстрок на 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() в той же строке, чтобы заменить любые пробелы символом pipe | ,

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

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

Порядок массива имеет значение, иначе вы получите <br|/> <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 /> .

EDIT с кодом:

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

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

 $what[0] = ' '; $what[1] = ' '; $with[0] = '<br /><br />'; $with[1] = '|'; str_replace($what, $with, trim($result['garment_type'] ) ) 

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

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