我有一个字符数组 -
$operators = array('%', '*', '+', '-', '@');
和例如 -
的字符串$text = '%@';
如何在串联中找到字符串中是否包含两个值 -
赞$text = %test%
- 有效,但$text = %+test
失败($concat = TRUE
)。
这就是我尝试过的 -
$concat = FALSE;
foreach ($operators as $op) {
$opPosition[$op] = strpos($text, $op);
// Here I need to check if any two values of
// $opPosition are neighbours, set the $concat variable to TRUE.
}
如何检查$opPosition
或者这是我正在尝试的唯一方式?
答案 0 :(得分:1)
您可以使用下面的preg_match。
// $concat will be 1 for any match
$concat = preg_match("/[%\*\+\-@]{2,}/", $text);
您可以找到正则表达式here
的说明注意:即使发生某些错误,$concat
也将为0。您可能需要使用==
运算符。
编辑:如果您的运算符在数组中,或者需要灵活地添加,更改或删除运算符而不会干扰正则表达式,则可以使用以下代码。
$text = "test%+";
$operators = array('%', '*', '+', '-', '@');
// create regular expression by imploding the array to string and using
// preg_quote to Quote regular expression characters
$expression = preg_quote(implode('', $operators), '/');
$concat = preg_match("/[$expression]{2,}/", $text);
的参考
演示here
答案 1 :(得分:0)
尝试使用此代码部分获取所需的输出 -
$operators = array('%', '*', '+', '-', '@');
$text = '%test%';
$end = substr($text,-1);
$start = substr($text, 0,1);
if(($start == $end) && in_array($start, $operators) == 1){
echo "valid";
}else{
echo "Not Valid";
}