如果你想要做的只是替换“Animal |”与“动物”,那么你可以做一个简单的str_replace
:
$check = "Apple|Orange|Animal|Dog|Grape";
$newCheck = str_replace("Animal|","Animal:"); // will be set to 'Apple|Orange|Animal:Dog|Grape'
那是你的意思?
编辑,对于案例2:
我假设你有一个像"Apple|Orange|Animal:Dog|Cat|Grape"
一个字符串,其类别,然后该类别的2名成员。根据您所说的,您希望将此字符串转换为"Apple|Orange|Animal:Dog,Cat|Grape"
,并用逗号分隔两个组成员而不是管道。这比第一种情况更复杂 - 类别名称可能会有所不同,并且您不能以冒号开头,因为组的第一个成员也可能会有所不同,因此您无法执行简单的str_replace
。对于这种情况,您需要使用正则表达式来匹配和替换字符串的模式。下面的代码:
$check = "Apple|Orange|Animal:Dog|Cat|Grape";
$newCheck = preg_replace("#(Animal:\w+)\|#", "$1,", $check); // will be set to "Apple|Orange|Animal:Dog,Cat|Grape"
DEMO
让我解释一下这是什么一样,如果你不熟悉正则表达式。 preg_replace
函数"#(Animal:\w+)\|#"
的第一个参数告诉PHP寻找所有以文本“Animal”开头的子字符串$check
,后跟一个冒号,然后是一串带有一个或多个字符的单词,并以管道结束。这将查找类别名称以及字符串中该类别的第一个成员。第二个参数":$1,"
告诉PHP将此模式后的第一个管道更改为逗号。如果你有一个不同的类别名称,只要你传递的第一个参数的模式改变为preg_replace
功能:
$check = "Apple|Orange|Animal1:Fish|Bird|Grape";
$newCheck = preg_replace("#(Animal1:\w+)\|#", "$1,", $check); // will be set to "Apple|Orange|Animal1:Fish,Bird|Grape"
让我知道这是很难跟随!
您能向我们展示您希望输出看起来如何吗?你希望每个项目都是独立的或更复杂的东西? – 2012-08-14 03:23:38
我想提取出“Animal | Dog”并更改为“Animal:Dog”或最终输出应该是“Apple | Orange | Animal:Dog | Grape” – Eric 2012-08-14 03:28:49
您只想更改这一个字符串或给定的任何一般字符串要提取的部分? – 2012-08-14 03:34:44