将preg_replace与mysql_fetch_array中的项一起使用

时间:2013-09-04 04:00:40

标签: php regex

好的,所以我不确定为什么,但是当我尝试对preg_replace()返回的数组项使用mysql_fetch_array()时,我没有得到任何结果,但是如果我采用相同的结果,则从数组中取出他们工作正常。

实施例

$pattern = '/^.*\b([0-9]{6}\s\D\d|[0-9]{6}\s\D[0-9]{2}|[0-9]{7}\s\D[0-9]{2})\b.*$/';
$replace = '$1';

while($row = mysql_fetch_assoc($result))
{
    $data[] = $row['description'];
}

foreach($data as $datas)
{
    echo preg_replace($pattern, $replace, $datas) . '<br>';
    echo '<br>';
}

所有这一切都是返回没有匹配,但如果我复制这些结果并将它们放在一个数组中它工作正常,我知道它不是正则表达式,因为我测试了之前我到目前为止。以下是我在单独数组中定义它们时工作的示例:

$subject = array(
  "Suzuki DR100 ignition pickup. Wires to the coils have been repaired and one needs to be repaired again. 082862 S15 <img src = \">http://www.roofis27.com/motorcycle/12_08_28/061.JPG\">",
  "1997 Suzuki VZ800 Marauder, Kick stand and spring. Chrome on end is starting to chip. 0121103 S19 <img src = \">http://www.roofis27.com/motorcycle/13_01_21/103.JPG\">",
  "Honda 1982 VF750C Magna right-side radiator trim panel. Good, damage-free condition. Needs cut and polished. Cheap, fast shipping! 011425 H6 <img src=\">http://www.roofis27.com/motorcycle/10_01_14/030.JPG\"> n=\">",
 ); 

foreach ($subject as $subjects)
{
    echo preg_replace($pattern, $replace, $subjects) . '<br>';
}

返回:

082862 S15

0121103 S19

011425 H6

所以我的问题是如何在preg_replace()返回的数组上使用mysql_fetch_array()

或者如何在MySQL中搜索和替换这些代码。

这一次我肯定会说清楚: 我有一个MySQL数据库,在product_description中包含这些位置代码,它们在长产品描述中的<img>标记之前就可以了。我需要将它们放入数据库的模型列中,该列位于另一个表中。使用SQL执行此操作没有问题,但无法从描述中删除这些位置代码。通过他们自己。 MySQL不允许使用我所知道的正则表达式,所以我试图用PHP代替它。 请帮忙!我真的被困了.....

1 个答案:

答案 0 :(得分:0)

在与某些人交谈之后,显然从mysql_fetch_array()返回的字符是不可见的,这就是正则表达式不起作用的原因。我使用preg_match()获得了更好的结果,如下所示:

foreach($data as $datas)
{

    $pattern = '([0-9]{6}\s\D[0-9]{2}|[0-9]{6}\s\D\d|[0-9]{7}\s\D[0-9]{2})';
    preg_match($pattern, $datas, $matches, PREG_OFFSET_CAPTURE);

    foreach($matches as $match){
        echo $match[0] . '<br>';
    }

}