'8808295663', "promocodereply"=>'123456', "phone"=>'017123456789'); foreach($input_result as $row) { //eg of"> '8808295663', "promocodereply"=>'123456', "phone"=>'017123456789'); foreach($input_result as $row) { //eg of"> '8808295663', "promocodereply"=>'123456', "phone"=>'017123456789'); foreach($input_result as $row) { //eg of" />

Preg Replaceは1つの入力に対してのみ機能しません

私はpreg置換を使用して私の出力の構文を置き換えます。ここに私のコードです:

$input_val_Arr = array("ic"=>'8808295663',
                 "promocodereply"=>'123456',
                 "phone"=>'017123456789');

foreach($input_result as $row)
{
    //eg of $row->input_title is promocodereply, phone, ic  

    $special_key =  $row->input_title;

    $rule = "/<".$row->input_title.">/i";

//if(preg_match('/promocodereply/i', $success_msg))

    if(preg_match($rule, $success_msg))
   {
     if(isset($input_val_Arr[$special_key]))
     {                              
      //$success_msg = preg_replace('//i', '123456', $success_msg);

      $success_msg = preg_replace($rule, $input_val_Arr[$special_key], $success_msg);   
    }                       
}
}

var_dump($success_msg); 

The $success_msg content is Success!

So the var_dump output should be Success! 123456 017123456789 8808295663

However the ic syntax is not replace and this is what i get. Success! 123456 017123456789

ここでの問題は何ですか?ありがとう。

0

1 答え

The regex is fine. Your $input_result array however contains only an entry where $row->input_title== is "IC" or something. Ths will work with the regex, but fail the isset($input_val_Arr[$special_key]). Since that's not a case-insensitive check.

You need to clean up your whole approach. The multiple checks are awfully redundant, and the variable names suck. A single preg_replace_callback is advisable for this task, with just /<(IC|PROMOCODEREPLY|PHONE)>/i as regex. Or use a single preg_replace call with arrays as subject and replacement.

0
追加された
ありがとう、全体のアプローチをクリーンアップした後、私は私のコード内の他の原因が原因であり、問​​題を解決することがわかります。
追加された 著者 cyberfly,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com