Php string explode string based on characters match with string condition
Php string explode string based on characters match with string condition
我有这样的字符串:
$string1 = '35 Hose & Couplings/350902 GARDEN HOSE COUPLING, PVC, 16\/19 MM"';
$string2 = '35 Hose & Couplings/350904 GARDEN HOSE TAP CONNECTOR, PVC, 3\/4" FEMALE THREAD"';
我试着把字符串分开,然后把它变成这样的数组:
$name1 = explode('/', $string1);
$name1 = trim(end($name1));
$name2 = explode('/', $string2);
$name2 = trim(end($name2));
/*
#results
$name1[0] = '35 Hose & Couplings';
$name1[1] = '350902 GARDEN HOSE COUPLING, PVC, 16\';
$name1[2] = '19 MM"';
...
#expected results
$name1[0] = '35 Hose & Couplings';
$name1[1] = '350902 GARDEN HOSE COUPLING, PVC, 16\/19 MM"';
...
*/
我想在只有/
的时候爆串,遇到\/
的时候不应该 展开字符串,如果包含 \/
我的代码仍然会展开字符串,有没有办法做到这一点?
你可以这样走:
$string1 = str_replace("\/","@",$string1);
$name1 = explode('/', $string1);
foreach($name1 as $id => $name) {
$name1[$id] = str_replace("@","\/",$name1[$id]);
}
有点麻烦,我知道,但应该可以解决问题。将其包装在函数中以提高可读性。
基本上我用一个临时字符串替换了你不想爆炸的字符串,并在爆炸后恢复它。
您可以使用带负数的正则表达式 look-behind:
$parts = preg_split('~(?<!\\)/~', $string1);
参见 eval.in
上的示例
我有这样的字符串:
$string1 = '35 Hose & Couplings/350902 GARDEN HOSE COUPLING, PVC, 16\/19 MM"';
$string2 = '35 Hose & Couplings/350904 GARDEN HOSE TAP CONNECTOR, PVC, 3\/4" FEMALE THREAD"';
我试着把字符串分开,然后把它变成这样的数组:
$name1 = explode('/', $string1);
$name1 = trim(end($name1));
$name2 = explode('/', $string2);
$name2 = trim(end($name2));
/*
#results
$name1[0] = '35 Hose & Couplings';
$name1[1] = '350902 GARDEN HOSE COUPLING, PVC, 16\';
$name1[2] = '19 MM"';
...
#expected results
$name1[0] = '35 Hose & Couplings';
$name1[1] = '350902 GARDEN HOSE COUPLING, PVC, 16\/19 MM"';
...
*/
我想在只有/
的时候爆串,遇到\/
的时候不应该 展开字符串,如果包含 \/
我的代码仍然会展开字符串,有没有办法做到这一点?
你可以这样走:
$string1 = str_replace("\/","@",$string1);
$name1 = explode('/', $string1);
foreach($name1 as $id => $name) {
$name1[$id] = str_replace("@","\/",$name1[$id]);
}
有点麻烦,我知道,但应该可以解决问题。将其包装在函数中以提高可读性。
基本上我用一个临时字符串替换了你不想爆炸的字符串,并在爆炸后恢复它。
您可以使用带负数的正则表达式 look-behind:
$parts = preg_split('~(?<!\\)/~', $string1);
参见 eval.in
上的示例