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

问题描述:

目前我有这个代码,用<br />来代替任何双空间。如何用str_replace()替换所有出现的两个子字符串?

它按预期工作:

​​

但是我想要做的另一个str_replace()在同一行上有竖线|更换任何单个空格。

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

任何帮助,将不胜感激。

+0

这个问题会,如果它得到改善提供了一些样本输入数据('$ result ['garment_type']')和期望的输出字符串。请记住,未来,寻求教育的人将访问这个页面数千次。 – mickmackusa

排列的顺序的确很重要,否则你会得到<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>' 
+0

这工作,除了它消失了这个 – Joe

+0

下所有的TR这是因为我从来没有包括这些部分。只需替换您的字符串替换我的字符串替换。保持你的其他东西。 – Rasclatt

+0

会是这样的? \t​​'。 str_replace(array('','||'),array('|','

'),trim($ result ['garment_type'])); 。 ' – Joe

你可以通过数组str_replace函数

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

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

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

我将如何在我的代码中使用它。一个例子会很好 – Joe

+0

Downvoted这个答案,因为它是不正确的/不提供所需的输出。 http://sandbox.onlinephpfunctions.com/code/6109975759520598646ebb4925af32147b02d9e3 – mickmackusa

要解决的问题与str_replace(在<br />空间正在与|取代)尝试strtr

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