我必须为两个选项生成正则表达式,例如,我有一个字符串:
apps; chrome
我必须把绳子分成两块,没有空格
1->应用程序2->铬
但问题是字符串可能是"apps;chrome"(后面没有空格)
我试过用爆炸
$part = explode(";", $search);
如果字符串在字符之间有空格,则第二个部分有空格。
我想要的是以下情况的正则表达式,将它们拆分为两部分
apps; chrome
apps;chrome
我希望你能理解,对不起我的英语:)
trim
函数将有助于:
list($k1,$k2) = array_map("trim",explode(";",$search));
一个衬垫=3
尝试在各个部件上使用trim
。
例如
$parts = array_map('trim', explode(';', $search));
如果你对分隔符有把握,基本上有两个选项。
1) 使用爆炸(';',$string)和array_map
这将分解字符串,并在数组上应用trim();
$slices = explode(';', $string);
$slices_filtered = array_map("trim", $slices);
2) 使用preg_split("/[,;''t''t]+/",$string)
这将把像"我们,是;冠军"这样的字符串拆分为{我们,是,冠军}
$slices_filtered = preg_split("/[,; 't'n]+/",$string);
**考虑到"选项"不会有空格;如果他们这样做了,你应该使用一些模式,比如
/[,;][ ]*/
仅仅因为您指定了正则表达式。。。这应该允许您将任何2个用分号分隔的小写字母字符串与任何数量(或类型)的空白"noise"进行匹配。
$sFullString = "app; chrome"; //or wherever you're getting your string from
//RegExp pattern to match many strings including "app;chrome"
$sRegExp = '/^'s*([a-z]+);'s*([a-z]+)'s*$/';
//first replacement
$sAppMatch = preg_replace($sRegExp, "$1", $sFullString);
//second replacement
$sChromeMatch = preg_replace($sRegExp, "$2", $sFillString);
在处理$parts
为什么选择regex?
<?php
$parts = explode(";", $search);
foreach ($parts as $k => $v) {
$parts[$k]=trim($v);
}