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

时间:2013-09-23 12:37:49

标签: php

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

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

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

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

$whereP .= and purpose=buy;

$whereP .= and type=sale;

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

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

为此我将=替换为=",以便将"放在每个媒体资源的前面,但我如何在每个媒体资源价值之后添加"?< / p>

现在我得到了$whereP = purpose="buy and type="sale

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

由于

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我有更好的方案..

创建您的查询字符串,如...

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

你会得到一个像 -

这样的数组
Array
(
    [where] => Array
        (
            [purpose] => buy
            [type] => sale
        )

)

现在,您可以更轻松地使用此数组创建SQL

答案 2 :(得分:0)

对于上述答案,请试试抱歉 它肯定会起作用

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

echo $whereP;

答案 3 :(得分:0)

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

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