大佬教程收集整理的这篇文章主要介绍了PHP-如何有效地将一个字符串解析为两个字符串?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何有效地确定给定的字符串是否包含两个字符串?
例如,假设我得到了字符串:abc-def-jk-l.该字符串包含两个字符串-除以-或不匹配.匹配的可能性是:
Possible Matches for "abc-def-jk-l" :
abc def-jk-l
abc-def jk-l
abc-def-jk l
现在,这是我要匹配的字符串列:
column I column II
------- -------
1. abc-def A. qwe-rt
2. ghijkl B. yui-op
3. mn-op-qr C. as-df-gh
4. stuvw D. jk-l
如何有效检查给定的字符串是否与上面列中的两个字符串匹配? (上面是一个匹配项-匹配abc-def和jk-l)
这里还有更多示例:
abc-def-yui-op [MATCH - Matches 1-B]
abc-def-zxc-v [NO MATCH - Matches 1, but not any in column II.]
stuvw-jk-l [MATCH - Matches 4-D]
mn-op-qr-jk-l [Is this a match?]
现在,给定上面的字符串,我如何有效地确定匹配项? (效率是关键,因为第i列和第ii列各自在其受尊重的表中的索引列上都有数百万行!)
更新:顺序将始终是第i列,然后是第ii列. (或“不匹配”,这可能意味着它仅匹配一列或不匹配)
这里有一些PHP可以帮助您:
<?PHP
$arrStrings = array('abc-def-yui-op','abc-def-zxc-v','stuvw-jk-l','stuvw-jk-l');
foreach($arrStrings as $String) {
print_r(StringMatchcheck($String));
}
function StringMatchcheck($String) {
$arrI = array('abc-def','ghijkl','mn-op-qr','stuvw');
$arrII = array('qwe-rt','yui-op','as-df-gh','jk-l');
// magic stackoverflow Help goes here!
if ()
return array($match[0],$match[1]);
else
return false;
}
?>
解决方法:
为了提高效率,而不是遍历每一列中的每个条目,而是将字符串分成尽可能多的不同单词并搜索每个单词组合.基本上,您提到的匹配.
$words = explode("-", $String);
$end = count($words) - 1;
for ( $i = 1; $i < $end; $i++ ) {
$partOne = array_slice($words, 0, $i);
$parttwo = array_slice($words, $i);
$wordOne = implode("-" , $partOnE);
$wordTwo = implode("-" , $partTwo);
/* sql to SELEct $wordOne and $wordTwo from the tables */
}
以上是大佬教程为你收集整理的PHP-如何有效地将一个字符串解析为两个字符串?全部内容,希望文章能够帮你解决PHP-如何有效地将一个字符串解析为两个字符串?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。