Php 搜索字符串中的单词并基于另一个字符串拆分连接的字符串

Php 搜索字符串中的单词并基于另一个字符串拆分连接的字符串,php,fuzzy,Php,Fuzzy,我如何在php中执行以下操作 我有两个输入$bankdata和$databasedata 问题: 如果单词与其他字符串单词匹配,则将其拆分为字符串 具有更多空格的字符串将被视为基本字符串,在下面的情况下,$databasedata将被视为基本字符串,然后它将与每个单词的$bankdata进行比较,然后拆分DHANA和LAKSHMI,然后重写 $bankdata = DHANA LAKSHMI K 例如: Input : $bankdata = 'DHANALAKSHMI K'

我如何在php中执行以下操作

我有两个输入$bankdata和$databasedata

问题:

如果单词与其他字符串单词匹配,则将其拆分为字符串

具有更多空格的字符串将被视为基本字符串,在下面的情况下,$databasedata将被视为基本字符串,然后它将与每个单词的$bankdata进行比较,然后拆分
DHANA
LAKSHMI
,然后重写

$bankdata = DHANA LAKSHMI K
例如:

Input :  
 $bankdata      = 'DHANALAKSHMI  K' 
 $databasedata  = 'DHANA LAXMI KOILADA'

Output :  
 $bankdata      = 'DHANA LAKSHMI  K'  //This willchanged
 $databasedata  = 'DHANA LAXMI KOILADA'

Input : 
 $bankdata      = 'P VENKATESWARA RAO' 
 $databasedata  = 'PARELLA VENKATESWARARAO'

Output :  
 $bankdata      = 'P VENKATESWARA RAO' 
 $databasedata  = 'PARELLA VENKATESWARA RAO' //This willchanged

Input : 
 $bankdata      = 'LINGAREDDY S' 
 $databasedata  = 'LINGA REDDY SHEELAM'

Output :  
 $bankdata      = 'LINGA REDDY S'   //This will changed 
 $databasedata  = 'LINGA REDDY SHEELAM'

Input : 
 $bankdata      = 'ROSHAN LAL' 
 $databasedata  = 'ROSHANLAL X'

Output :  
 $bankdata      = 'ROSHAN LAL' 
 $databasedata  = 'ROSHAN LAL X' //This will changed

Hello@daootim此代码将检查另一个字符串中的单词,并将其替换为额外的空格。你需要创造更多的条件,因为这是非常直接的。我希望有帮助

$bankdata      = 'P VENKATESWARARAO RAO' ;
$databasedata  = 'PARELLA VENKATESWARARAORAO';
echo 'INPUT: ' . $databasedata . '<br>';
echo 'INPUT: ' . $bankdata . '<br>';
$inputArray1 = explode(' ',$bankdata);
$inputArray2 = explode(' ',$databasedata);

foreach ($inputArray1 as $word) {
    if (strlen($word) > 1){
        foreach ($inputArray1 as $reference) {
            if ($reference != $word){
                if (strpos($reference,$word) > 0) continue 2;
            }
        }
        $databasedata = str_replace($word, $word." ",$databasedata);
    }
}
foreach ($inputArray2 as $word) {
    if (strlen($word) > 1){
        foreach ($inputArray2 as $reference) {
            if ($reference != $word){
                if (strpos($reference,$word) > 0) continue 2;
            }
        }
        $bankdata = str_replace($word, $word." ",$bankdata);
    }
}
echo 'OUTPUT: ' . $databasedata . '<br>';
echo 'OUTPUT: ' . $bankdata . '<br>';
$bankdata='P venkateswarao RAO';
$databasedata='PARELLA VENKATESWARARAORAO';
回显“输入:”$数据库数据。”
'; 回显“输入:”$银行数据。”
'; $inputArray1=爆炸(“”,$bankdata); $inputArray2=爆炸(“”,$databasedata); foreach($word形式的inputArray1){ 如果(strlen($word)>1){ foreach($inputArray1作为$reference){ 如果($reference!=$word){ 如果(strpos($reference,$word)>0)继续2; } } $databasedata=str_replace($word,$word.“,$databasedata); } } foreach($word形式的inputArray2){ 如果(strlen($word)>1){ foreach($inputArray2作为$reference){ 如果($reference!=$word){ 如果(strpos($reference,$word)>0)继续2; } } $bankdata=str_replace($word,$word.“,$bankdata); } } 回显“输出:”$数据库数据。”
'; 回显“输出:”$银行数据。”
';
输入:PARELLA VENKATESWARARAORAO

输入:p VENKATESWARARAORAO

产出:PARELLA Venkateswarao RAO

<?php

function swap(&$bankdata, &$databasedata)
{
    // get the spaces from each word
    // we use preg_replace to remove additional spaces in any of the words.
    $bank_arr = explode(' ', preg_replace('/\s+/', ' ', $bankdata));
    $data_arr = explode(' ' , preg_replace('/\s+/', ' ', $databasedata));

    $bank_space_count = count($bank_arr);
    $data_space_count = count($data_arr);

    $fixUp = function ($words, $with)
    {
        $patterns = [];
        $replacements = [];
        foreach($with as $each_word) {
            // skip single characters
            if (strlen($each_word) == 1) {
                continue;
            }

            $patherns[] = "/{$each_word}(\w\s+)?/";
            $replacements[] = "$0 ";
        }

        return preg_replace($patherns, $replacements, $words);
    };


    if ($bank_space_count >= $data_space_count) {
        $databasedata = $fixUp($databasedata, $bank_arr);
    }
    else {
        $bankdata = $fixUp($bankdata, $data_arr);
    }
}

$bankdata      = 'DHANALAKSHMI  K';
$databasedata  = 'DHANA LAXMI KOILADA';

swap($bankdata, $databasedata);


var_dump($bankdata, $databasedata);

输出:p Venkateswarao RAO

当我通过'DB INPUT:VARUN SURYAKANT LLOYD BANK INPUT:SURYA VARU LLOYD DB OUTPUT:VARU N SURYA KANT LLOYD。银行输出:SURYA VARU LLOYD`问题是VARUN在VARU N中得到了拆分,而这不应该拆分代码,因为代码按预期工作。在银行输入中,你有单词VARU.ok你是对的,
$dbdata=GAURE LAL AHIRWAR,$bankdata=GORELAL AHIRWAR
输出-
$bankdata=GORE LAL AHIRWAR
$dbdata=M DEEPA,$bankdata=M DEEPA
,$bankdata=M DEEPA你能建议我关闭答案吗?如果(strlen($word)>1)
这会起作用吗?当我通过
数据库输入:RAJARANI MOHANRAO,银行输入:RAJA MOHAN
将输出作为
数据库输出:RAJARANI MOHANRAO,银行输出:RAJA MOHAN
预期输出DB输出是RAJA RANI MOHAN RAO你能帮我吗
<?php

function swap(&$bankdata, &$databasedata)
{
    // get the spaces from each word
    // we use preg_replace to remove additional spaces in any of the words.
    $bank_arr = explode(' ', preg_replace('/\s+/', ' ', $bankdata));
    $data_arr = explode(' ' , preg_replace('/\s+/', ' ', $databasedata));

    $bank_space_count = count($bank_arr);
    $data_space_count = count($data_arr);

    $fixUp = function ($words, $with)
    {
        $patterns = [];
        $replacements = [];
        foreach($with as $each_word) {
            // skip single characters
            if (strlen($each_word) == 1) {
                continue;
            }

            $patherns[] = "/{$each_word}(\w\s+)?/";
            $replacements[] = "$0 ";
        }

        return preg_replace($patherns, $replacements, $words);
    };


    if ($bank_space_count >= $data_space_count) {
        $databasedata = $fixUp($databasedata, $bank_arr);
    }
    else {
        $bankdata = $fixUp($bankdata, $data_arr);
    }
}

$bankdata      = 'DHANALAKSHMI  K';
$databasedata  = 'DHANA LAXMI KOILADA';

swap($bankdata, $databasedata);


var_dump($bankdata, $databasedata);