好的,所以我不确定为什么,但是当我尝试对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代替它。
请帮忙!我真的被困了.....
答案 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>';
}
}