用户将输入一个类似于 的字符串151+328
。我需要一个函数来检测用户在两个数字之间输入的操作并返回它们。怎么做?我知道如何用正则表达式做第一部分(即[0-9]+\+[0-9]
,但我对第二部分一无所知。
tldr:
function('10+296', '+', 1)='10'
function('10+296', '+', 2)='296'
function('perpderpherp', 'derp', 2)='herp'
此函数使用正则表达式来确保字符串采用以下格式:[0-9]+[0-9] 然后分解以拆分并返回一部分:
function splitAndReturn($str, $delimiter, $part) {
$pattern = '/^\d+\+\d+$/';
if (preg_match($pattern, $str)) {
$parts = explode($delimiter, $str);
return $parts[$part-1];
}
return false;
}
echo splitAndReturn('10+296', '+', 1); //=10
echo splitAndReturn('10+296', '+', 2); //=296
echo splitAndReturn('potatocarrotbanana', 'carrot', 1); // returns false because it doesn't comply with the "detect only [0-9]+[0-9]" rule you stated.
此函数用于explode
在分隔符处拆分字符串并返回任何部分:
function splitAndReturn($str, $delimiter, $part) {
$parts = explode($delimiter, $str);
return $parts[$part-1];
}
echo splitAndReturn('10+296', '+', 1); //=10
echo splitAndReturn('10+296', '+', 2); //=296
echo splitAndReturn('potatocarrotbanana', 'carrot', 1); //='potato'
如果分隔符不存在,它将只返回原始字符串。
\d+\+\d+
将检测到number + number
而不是word + word
或word + number
或number + word