如果您只想替换“动物|” 用“动物:”然后你可以做一个简单的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"
演示
让我解释一下这是做什么的,以防您不熟悉正则表达式。preg_replace
函数的第一个参数"#(Animal:\w+)\|#"
, 告诉 PHP 查找所有$check
以文本“Animal”开头的子字符串,后跟冒号,然后是包含一个或多个字符的单词字符串,并以管道结尾。这将在您的字符串中查找类别名称以及该类别的第一个成员。第二个参数 ,":$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"
让我知道这是否难以理解!