ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP-如何有效地将一个字符串解析为两个字符串?

2019-12-01 05:32:20  阅读:177  来源: 互联网

标签:comparison string 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 */
}

标签:comparison,string,php
来源: https://codeday.me/bug/20191201/2078539.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有