如何用str_replace()替换所有出现的两个子串?

时间:2017-08-08 20:19:29

标签: php str-replace spaces

目前我有这个代码用<br />替换任何双倍空格。

按预期工作:

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

但是我想在同一行上再做一个str_replace(),用管道符|替换任何一个空格。

我尝试复制代码,但这只是为我创建了另一个TD

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:4)

您可以将数组传递给str_replace

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

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

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

答案 1 :(得分:1)

数组的顺序很重要,否则您将获得<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>'

答案 2 :(得分:1)

要解决str_replace的问题(<br />中的空格被|替换),请尝试strtr

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