Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP检查两个字符串是否有公共部分?_Php_String - Fatal编程技术网

PHP检查两个字符串是否有公共部分?

PHP检查两个字符串是否有公共部分?,php,string,Php,String,主字符串包含由分隔的部分# 我需要检查传入的字符串是否包含任何被禁止的密钥 在实际示例中,键由md5($var)生成,每个键的长度为32个字符。$Banked_keys和$incoming_keys中的键数都是可变的1 $banned_keys = 'abc1#abc2#abc3#abc4'; $incoming_keys1='asd1#asd2#asd3#asd4'; //should pass no banned key found $incoming_keys2='asd1#asd2#

主字符串包含由分隔的部分#

我需要检查传入的字符串是否包含任何被禁止的密钥

在实际示例中,键由md5($var)生成,每个键的长度为32个字符。$Banked_keys和$incoming_keys中的键数都是可变的1

$banned_keys =  'abc1#abc2#abc3#abc4';

$incoming_keys1='asd1#asd2#asd3#asd4'; //should pass no banned key found
$incoming_keys2='asd1#asd2#asd3#abc3'; //Should fail, contains banned key 'abc3'

尝试使用
explode('#',$string)
将传入键和禁用键的字符串转换为数组,然后使用进行检查

比如说

$banned = explode('#','abc1#abc2#abc3#abc4');
$incoming = explode('#','asd1#asd2#asd3#asd4');
if(in_array($banned,$incoming)){
 //fail
}

可能有更好的方法,但这应该有效:)

尝试使用
explode('#',$string)
对传入键和禁用键将字符串转换为数组,然后使用进行检查

比如说

$banned = explode('#','abc1#abc2#abc3#abc4');
$incoming = explode('#','asd1#asd2#asd3#asd4');
if(in_array($banned,$incoming)){
 //fail
}

可能有更好的方法,但这应该是可行的:)

您可以“分解”字符串以将其转换为数组,然后匹配数组条目(如果交集包含任何条目,则至少提供一个禁用键):


您可以“分解”字符串以将其转换为数组,然后匹配数组条目(如果交集包含任何条目,则至少提供一个禁用键):

请尝试以下操作:

$banned_keys_array = explode("#", $banned_keys);
$incoming_keys_arr = explode("$", $incoming_keys);

$is_valid_key = true;
foreach($incoming_keys_arr as $key) {
  if (in_array($key, $banned_keys_array) {
     // Invalid key found;
     $is_valid_key = false;
     break;
  }
}

// check $is_valid_key here
请尝试以下操作:

$banned_keys_array = explode("#", $banned_keys);
$incoming_keys_arr = explode("$", $incoming_keys);

$is_valid_key = true;
foreach($incoming_keys_arr as $key) {
  if (in_array($key, $banned_keys_array) {
     // Invalid key found;
     $is_valid_key = false;
     break;
  }
}

// check $is_valid_key here
试试看这里:

对于正则表达式

我对使用正则表达式还是个新手

我想对于你的问题,模式应该是

/abc1|abc2|abc3|abc4/g
那么答案应该是

<?php
$subject = "asd1#asd2#asd3#asd4";
$pattern = '/abc1|abc2|abc3|abc4/g';
if (preg_match($pattern, $subject, $matches)) {
echo "Match was found <br />";
echo $matches[0];
}
?>

函数的作用是:如果找到匹配项,则返回1,否则返回0

试试看这里:

对于正则表达式

我对使用正则表达式还是个新手

我想对于你的问题,模式应该是

/abc1|abc2|abc3|abc4/g
那么答案应该是

<?php
$subject = "asd1#asd2#asd3#asd4";
$pattern = '/abc1|abc2|abc3|abc4/g';
if (preg_match($pattern, $subject, $matches)) {
echo "Match was found <br />";
echo $matches[0];
}
?>


函数的作用是:如果找到匹配项,则返回1,否则返回0

只有32个字符的输入字符串应该匹配32个字符的禁止。。。你怎么说有了strpos()?也许我遗漏了什么??很好实际上“in_array”是一个很好的方法,我试着循环,所以放弃了,并寻找字符串比较。只有32个字符的输入字符串应该匹配32个字符的禁止。。。你怎么说有了strpos()?也许我遗漏了什么??很好实际上“in_array”是一个很好的方法,我试着循环,所以就放弃了,寻找字符串比较。我喜欢这个!不知道数组_intersect。很好的一个:)我相信数组中的交集比数组中的好。这让我很开心!如果以后不需要数组:
if(数组相交(explode(“#”)、$bankeys(“#”)、explode(“#’、$incoming#keys))
我喜欢这样!不知道数组_intersect。很好的一个:)我相信数组中的交集比数组中的好。这让我很开心!如果以后不需要数组:
if(数组相交(分解(“#”)、$bankind#keys)、分解(“#’、$incoming#keys))