2017-04-11 73 views
0

我试了很多preg_replace和preg_match代码,但我不能这样做。 我试图找到字符串包含+18,18+或(+18) 我无法解释,但你可以理解当看到我的代码。发现加上“+”字符的数字像+90 90+在字符串

//inputs 
$product='example: 18 kg apple'; // my hope output: EVERYONE 
$product='water pipe (18) meters'; // my hope output: EVERYONE 
//outputs: OVER 18 

$product='product +18 dress'; // my hope output: OVER 18  
$product='product 18+ dress'; // my hope output: OVER 18 
$product='product (+18) dress';  // my hope output: OVER 18 
//outputs are already OVER 18 
//Because of contain 18 
//not +18 or 18+. it doesnt work truly 


    preg_match('/\b(\w*18\w*)\b/', $product, $match); 

     if($match[1]=='+18' || $match[1]=='18+') { 

       echo "OVER 18<br>"; 
    } 
     else{ 
       echo "EVERYONE<br>"; 

       } 
+0

尝试'preg_match('〜\ +18 \ b | \ b18 \ +〜',$ s,$ m)' –

+0

它的工作原理非常感谢bro –

回答

0

在这个简单的例子,我不会用一个正则表达式。只是使用strpos也将做的工作。

if (strpos($product, '18+') !== false || strpos($product, '+18') !== false) { 
    // over 18 
} 
+0

是的,但是如果它找到'+ 180'和'180 + –

+0

感谢兄弟,完全符合我的想法,是的,它在+180和180+以上都是假的,但对我来说已经足够了,我不认为我遇到的产品包含+180或180+。 我不 –

1

使用此:(\+18|18\+) - 它会检查是否+1818+存在的字符串中。

所以像这样: preg_match('(\+18|18\+)', $product, $match);应该工作。

只测试了在这里https://regex101.com/(一个非常好的地方来测试正则表达式

相关问题