首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于字符串条件匹配的Php字符串爆炸字符串

基于字符串条件匹配的Php字符串爆炸字符串
EN

Stack Overflow用户
提问于 2018-02-26 10:46:10
回答 2查看 134关注 0票数 5

我有这样的条件:

代码语言:javascript
复制
$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"';

我试图分离字符串并将其转换为如下数组:

代码语言:javascript
复制
$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"';
 ...
*/

我只想在只有/的情况下爆炸字符串,但是当它遇到\/时,不应该爆炸字符串,如果它包含\/,我的代码仍然会爆炸字符串,有办法这样做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-26 10:56:32

您可以使用带有负面外观的正则表达式:

代码语言:javascript
复制
$parts = preg_split('~(?<!\\\\)/~', $string1);

参见eval.in上的示例

票数 3
EN

Stack Overflow用户

发布于 2018-02-26 10:53:35

你可以这样走:

代码语言:javascript
复制
$string1 = str_replace("\/","@",$string1);
$name1 = explode('/', $string1);
foreach($name1 as $id => $name) {
    $name1[$id] = str_replace("@","\/",$name1[$id]);
}

有点麻烦,我知道,但应该能行。为了更好的可读性,将它封装在一个函数中。

基本上,我把绳子换了,你不想用一根临时的绳子爆炸,爆炸后再把它放回去。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48986634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档