gpt4 book ai didi

php - 正则表达式不适用于 mysql_fetch_array

转载 作者:行者123 更新时间:2023-11-30 01:20:13 28 4
gpt4 key购买 nike

如何对从 mysql_fetch_array() 返回的数组执行搜索并用 php 替换?如果我使用 preg_replace()它不会返回匹配项。我缺少什么吗?这是我使用过但没有成功的方法,任何人都可以看一下并告诉我我做错了什么,或者可能是实现此目的的更好方法:

mysql_connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD)
or die("<p>Error connecting to database: " . mysql_error() . "</p>");
mysql_select_db(DATABASE_NAME)
or die("<p>Error selecting the database " . DATABASE_NAME . mysql_error() . "</p>");
$sql = "SELECT product_id,description FROM oc_product_description WHERE product_id >= 97 AND product_id <= 100";
$result = mysql_query($sql);
$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))
{
$item[] = $row['description'];
}
foreach($item as $items)
{
echo preg_replace($pattern, $replace, $items) . '<br>';
echo '<br>';
}

这一切所做的就是返回与没有 preg_replace() 时相同的结果。 。现在我知道代码可以工作,因为如果我输出 print_r($item)并将结果复制到数组中,效果很好。我做错了什么还是preg_replace()只是不适用于从 mysql_fetch_assoc 返回的数组或mysql_fetch_array ?我可以将示例放在将结果复制到数组中的位置,但不想浪费空间。这是从数据库返回的项目和我尝试与正则表达式匹配的字符串的示例。我需要把除了火柴之外的所有东西都拿走。

从 $row['description'] 返回一项:

1997 Suzuki VZ800 Marauder, Engine # 5506-111789, 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">

以下是正则表达式返回的内容:0121103 S19

因此,我的数据库中有超过 20,000 个条目,其中包含类似的描述,并且需要从其中删除这些代码(如上面的示例),以便我可以 INSERT将它们放入与 product_id 匹配的另一个表列中与描述相关product_id 。我不是 SQL 方面最好的,但是<img>标签总是在代码后面,所以也许有一种我不知道的 SQL 方法可以做到这一点?我现在主要关心的是为什么 preg_replace()不适用于从 mysql_fetch_array() 返回的数组,但在任何其他数组(关联数组、多维数组或非关联数组)上都可以正常工作。从数据库返回的值是否存在某些问题导致我无法执行此操作?任何事情都会非常感激,我真的很坚持这个!

最佳答案

在考虑了 jerry 所说的(在上面的评论中)之后,我提出了这个解决方案,显然 mysql_fetch_array() 返回的字符中有一些不可见的字符,这就是正则表达式的原因不起作用。我使用 preg_match() 得到了更好的结果,如下所示:

$sql = 'SELECT product_id,description FROM oc_product_description';
$sql1 = 'UPDATE db_product SET model = ';
$sql2 = 'WHERE product_id = ';
$pattern = '([0-9]{6}\s\D[0-9]{2}|[0-9]{6}\s\D\d|[0-9]{7}\s\D[0-9]{2})';
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result))
{
$data[] = $row['description'];
foreach($data as $datas)
{
preg_match($pattern, $datas, $matches, PREG_OFFSET_CAPTURE);
}
foreach($matches as $match)
{
$Q1 = $sql1 . '"'. $match[0] . '"' . ' ';
}
$Q2 = $sql2 . $row['product_id'] .';';
$query = $Q1 . $Q2;
mysql_query($query);
echo 'Product ID' . $row['product_id'] . ': ';
printf("Records updated: %d\n", mysql_affected_rows());
echo '<br>';
}

是的,我将开始使用 PDO 进行数据库操作和查询,对其进行了一些研究,看起来很酷。只是我对 php 很陌生,而且还在上学,所以我有很多学习要做,我讨厌必须改变(不过更好地习惯它,嗯?)谢谢杰瑞:)

关于php - 正则表达式不适用于 mysql_fetch_array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18627182/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com