-1

好的,所以我不知道为什么,但是当我尝试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 来代替。请提供任何帮助!我真的被困住了......

4

1 回答 1

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>';
    }

}
于 2013-09-05T14:08:48.967 回答