2014-11-04 98 views
0

我想檢查一個字符串是否有字符「|」 (只有一次,不在字符串的開始或結尾)。如果是這種情況,字符串應該被分割。第二個檢查是如果第一部分是「X」或不。RegexCheck如果「|」是在一個字符串

例子:

$string = "This|is an example"; // Output: $var1 = "This"; $var2 = "is an example"; 

正則表達式是真的對我來說很難。這是我可憐的嘗試:

if (preg_match('/(.*?)\|(.*?)/', $string, $m)) { 
    $var1 = $m[1]; 
    $var2 = $m[2]; 
if ($var1 == "X") // do anything 
else // Do something else 
+1

爲什麼你不能使用爆炸功能 – gvgvgvijayan 2014-11-04 09:07:52

回答

3

一個純粹的正則表達式的解決辦法是:

^  -- start of input 
[^|]+ -- some non-pipes 
\| -- a pipe 
[^|]+ -- some non-pipes 
$  -- finita la comedia 

但是,字符串函數可能會更好地工作,在這種情況下,因爲你要去反正把它分解:

$x = explode('|', $input); 
if(count($x) == 2 && strlen($x[0]) && strlen($x[1])) 
    // all right 
1

如果你不知道正則表達式,你可能想要一個不使用正則表達式的解決方案。

$test = ["|sdf", "asd|asad", "asd|", "asdf", "sd|sdf|sd"]; 

foreach ($test as $string) { 
    $res = explode("|", $string); 
    if (2 === count($res) && strlen($res[0]) && strlen($res[1])) { 
     var_dump($res); 
    } 
} 

結果:

array(2) { 
    [0]=> 
    string(3) "asd" 
    [1]=> 
    string(4) "asad" 
} 
相關問題