Php 如何在主字符串中查找多个逗号分隔的字符串
我有这个主要的刺Php 如何在主字符串中查找多个逗号分隔的字符串,php,string,Php,String,我有这个主要的刺 S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS 我想找到以下每个字符串 DSR和FXS 我尝试了以下代码,但它不能给我完美的结果 代码 <?php $mainstring ="S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS"; $needed = "DSR,FXS"; if( strpos( $mainstring, $needed )
S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS
我想找到以下每个字符串
DSR
和FXS
我尝试了以下代码,但它不能给我完美的结果
代码
<?php
$mainstring ="S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS";
$needed = "DSR,FXS";
if( strpos( $mainstring, $needed ) !== false ) {
echo "Found";
}else{
echo "Not match";
}
?>
一种解决方案是用逗号分解这些字符串,并验证生成的数组交集计数是否与搜索结果相同:
$mainstring ="S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS";
$needed = "DSR,FXS";
$mainStringArr = explode(',', $mainstring);
$neededArr = explode(',', $needed);
if (count(array_unique(array_intersect($mainStringArr, $neededArr))) == count($neededArr)) {
echo 'found';
} else {
echo 'not found';
}
通过命令分解
$needed
字符串,使用strops()
函数遍历数组,并将数组的每个值比较为$mainstring
。如果找到,则将该值放入带有“已找到”或“未找到”值的$arrResult
,最后打印$arrResult
,以查看需要的$值和未找到的值
此外,如果找到值,我们将增加变量$cntRequired
。在foreach
循环结束时,比较$cntRequired
和$arrRequired
的值是否相同,然后在$mainstring
中找到所有值,否则不存在
$mainstring ="S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS";
$needed = "DSR,FXS";
$arrNeeded = explode(",", $needed);
$arrResult = array();
$cntNeeded = 0;
foreach($arrNeeded as $index => $needed) {
if( strpos( $mainstring, $needed ) !== false ) {
$arrResult[$needed] = "Found";
$cntNeeded++;
}
else{
$arrResult[$needed] = "Not match";
}
}
print("<pre> :: arrResult ::");
print_r($arrResult);
print("</pre>");
if($cntNeeded == count($arrNeeded)) {
echo "Found";
}
else {
echo "Not match";
}
$mainstring=“S,SR,DSR,DS,FX,FXS,SR,DS,DS,FX,S,SR,DS,FX,S,SR,DS,FX,FXS”;
$needed=“DSR,FXS”;
$ArrRequired=爆炸(“,”,$Required);
$arrResult=array();
$CNT=0;
foreach($arrRequired as$index=>$Required){
if(strpos($mainstring,$needed)!==false){
$arresult[$needed]=“Found”;
$CNT++;
}
否则{
$arresult[$needed]=“不匹配”;
}
}
打印(“::结果:”);
打印(结果);
打印(“”);
如果($cntRequired==计数($arrRequired)){
回声“发现”;
}
否则{
回声“不匹配”;
}
“DSR,FXS”不在您的字符串中…如果(strpos($mainstring,$needed)!==false)不是最聪明的方法,因为如果$mainstring以$needed开头,strpos将返回0,这是==false。不,“DSR”可用,“FXS”可用,但“DSR,FXS”不可用。它们可以单独使用,但顺序不正确,strpos查找DSR、FXS
而不是DSR
,然后查找FXS
@kosta,仅供参考,该==
和===
(三重相等)检查值的类型以及值。因此0(int-zero)与false(boolean)不同。为什么OP“尝试下面的代码”?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。