2014-03-07 106 views
0

我使用了preg_match函數,它在匹配發生時工作正常,但當匹配不發生時它也返回true。 我使用的代碼是:preg_match函數總是返回true值

if (preg_match('/[slider]/',$value)) { 
//return $kk=preg_match('/[slider]/',$value); 
$out=delete_all_between('[', ']', $value); 

$xx=explode("[slider id=",$value); 

    $yy=$xx[1]; 
    $zz=str_replace(']', '', $yy); 
    $slider_query=mysqli_query($con,"select images_id from sliders where id='$zz'"); 
    $slider_query_result=mysqli_fetch_array($slider_query); 
    $images_id=$slider_query_result['images_id']; 
    $split_images_id=explode(",",$images_id); 
    $data=""; 
    foreach($split_images_id as $si) 
    { 
    $image_query=mysqli_query($con,"select image_url from gallery where id='$si' "); 
    $image_query_result=mysqli_fetch_array($image_query); 
    $image=$image_query_result['image_url']; 
    $data.='<li><a href="#"><img src="uploads/'.$image.'" height="80px" width="80px"></a></li>'; 
    } 
    return $out.$data; 
} 
else 
{ 
    return $value; 
} 
} 

一旦$value包含[slider]和第二時間&值不包含[slider] 請任何解決方案,並隨時對任何懷疑。

回答

1

[slider]是一個字符類,意義,preg_match()將返回如果字符列表中的任何提供的字符串中發現了一個truthy值。你需要明確地逃脫字符[]字符串匹配[slider]

if (preg_match('/\[slider\]/', $value)) { 
    # code... 
} 
+0

請參閱我的代碼,你說我使用的是相同的.... –

+0

@艾米,艾米:你正在使用'的preg_match ('/ [slider] /',$ value)',但是您需要使用**'preg_match('/ \ [slider \] /',$ value)'**。注意''和'''是如何轉義的。 –

+0

好的...非常感謝,現在它正在工作...... :) –