在字符串中动态添加双引号


adding double quotes dynamically in a string

我正在做一个项目,我根据多个过滤器显示记录。我现在正在做的是创建一个包含所有条件的$where变量。例如

$whereP .= ' and purpose="buy"';

$whereP .= ' and type="sale"';

同样,对于其他属性,然后我替换了第一个and。问题是我有分页,由于 url 中的单双引号问题,我无法在参数中发送$where。所以我想要的解决方案是,我做了两个不同的变量 $where$whereP .

$whereP .= and purpose=buy;

$whereP .= and type=sale;

现在,当我从 url 获取$whereP时,我想为属性值添加双引号,例如。

$where = purpose="buy" and type="sale"

为此,我用="替换=,以便将"放在每个属性的前面,但是我如何在每个属性值之后添加"

现在我越来越$whereP = purpose="buy and type="sale

我需要$whereP = purpose="buy" and type="sale"

谢谢

你应该接受 Arun Killu 评论中的建议,停止以这种方式构建查询,但如果你想保持原样,你可以这样使用preg_replace(假设尾随空格是一个足够好的分隔符):

$string = preg_replace ( '/=(.*)'s/i' , '="$1" ' , $string ); 

我有一个更好的方案。

创建查询字符串,例如...

?where[purpose]=buy&where[type]=sale

你会得到一个类似 -

Array
(
    [where] => Array
        (
            [purpose] => buy
            [type] => sale
        )
)

现在,使用此数组创建SQL将变得更加容易。

试试这个对不起上面的答案它肯定会起作用

$variable="ad";
$whereP="";
$whereP .= ' and purpose="'.$variable.'"';
echo $whereP;

从字面上看,但如前所述,有更好的方法可以做到这一点,我使用 Zend Framework。http://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html

$where = preg_replace('/=('w+)/', '="$1"', $whereP);