-1

私は PHP とこのフォーラムに非常に慣れていません。私の質問がこのフォーラムに適しているかどうかわかりません。

文字列があります$filter=([operator] = 'IDEA') AND ([type] = 'R,T'); が、この文字列には値 [type] の動的な値があり、値 [type]='R,T' が [type]='R,T,P' になる可能性があることを意味します ...... ....

[タイプ] の各文字コンテンツについて、次のように変更する必要があります。

([operator] = 'IDEA') AND ([type] ='R' OR [type] = 'T')

また

([operator] = 'IDEA') AND ([type] ='R' OR [type] = 'T' OR [type] = 'P')

...................................

このために、私は小さなコードを書きました。それには約 1 日かかります。

$text = explode("[type] =",$filter);
$myreplacetext = "[type] = ".$text[1];
$text2 = preg_replace('/[^a-zA-Z0-9_ %\[\]\.,]/s', '', $text[1]);
$string = explode(",", $text2);;
$i=0;
foreach($string as $value){
    $value = trim($value);
    if($i==0)$mynewtext = "'".$value."'";
    else $mynewtext = $mynewtext." OR [type] = '".$value."'";
    $i++;
}
$mynewtext = $mynewtext.")";
$filter = str_replace($text[1],$mynewtext,$filter);

誰でもこのコードを簡単な方法で書くように親切に案内してください

4

1 に答える 1

1

わかった。このコードを試してください。ご不明な点がございましたら、お気軽にここにコメントしてください。

    $filter = "([operator] = 'IDEA') AND ([type] = 'R,T,P')";
    $text = explode("[type] =",$filter);
    $firstPart = $text[0];
    $text2 = preg_replace('/[^a-zA-Z0-9_ %\[\]\.,]/s', '', $text[1]);

    // now:
    // $firstPart sholud be like '([operator] = 'IDEA') AND ('
    // $text2 should be like 'a,b,c'
    $string = explode(",", $text2);
    $typeList = array();
    foreach ($string as $value)
    {
        $value = trim($value);
        if (!$value)
        {
            continue;
        }
        $typeList[] = "[type] = '$value'";
    }
    $typeStr = implode(' OR ', $typeList);

    // $firstPart sholud be like '([operator] = 'IDEA') AND ('
    // $typeStr should like: [type] ='R' OR [type] = 'T' OR [type] = 'P'

    // so the result should be:
    $filter = $firstPart . $typeStr . ')';
    echo $filter;
    // the output:  ([operator] = 'IDEA') AND ([type] = 'R' OR [type] = 'T' OR [type] = 'P')
于 2013-07-20T03:37:56.427 に答える