preg_match有两个选择

时间:2012-02-10 16:19:41

标签: php regex preg-match

我必须为两个选项制作一个正则表达式,例如我有一个字符串:

apps; chrome

我必须将字符串分成两部分,没有空格

1→应用 2→铬

但问题是字符串可能是" apps; chrome" (没有空格;)

我试过爆炸

$part = explode(";", $search);

如果字符串在字符之间有空格,则第二部分有空格。

我想要的是一个正则表达式,用于跟踪案例将它们分成两部分

apps; chrome
apps;chrome

我希望你理解,对不起我的英语:)

6 个答案:

答案 0 :(得分:3)

trim功能有助于:

list($k1,$k2) = array_map("trim",explode(";",$search));

一衬垫! = 3

答案 1 :(得分:2)

尝试在各个部分使用trim

e.g。

$parts =  array_map('trim', explode(';', $search)); 

答案 2 :(得分:1)

好吧,如果你确定分隔符,基本上你有两个选择。

1)使用explode(';',$ string)和array_map
这会爆炸字符串,并在数组上应用trim();

$slices = explode(';', $string);
$slices_filtered = array_map("trim", $slices);

2)使用preg_split(“/ [,; \ t \ n] + /”,$ string);
这会将“我们,正在; \ n冠军”等字符串分成{we,are,the,champions}

$slices_filtered = preg_split("/[,; \t\n]+/",$string);

**考虑到'选项'不会有空格;如果他们这样做,你应该使用像

这样的模式
/[,;][ ]*/

答案 3 :(得分:1)

只是因为你指定了一个正则表达式......这应该允许你匹配任何由分号分隔的2个小写字母字符串,以及任何数字(或类型)的空格“噪音”。 / p>

$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);

答案 4 :(得分:0)

在处理$ parts

之前,只需使用trim()函数

答案 5 :(得分:0)

为何选择正则表达式?

<?php
$parts = explode(";", $search);
foreach ($parts as $k => $v) {
  $parts[$k]=trim($v);
}