0

から返された配列で検索を実行して php に置き換えるにはどうすればよいですmysql_fetch_array()か? 使用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_assocmysql_fetch_array? 結果を配列にコピーする例を挙げることができますが、スペースを無駄にしたくありません。データベースから返されたアイテムと、正規表現と照合しようとしている文字列の例を次に示します。マッチ以外はすべて削除する必要があります。

$row['description'] から返された 1 つのアイテム:

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一致する別のテーブル列に入れることができます。私はSQLが得意ではありませんが、タグは常にコードの後に​​あるので、私が知らないSQLでそれを行う方法があるのではないでしょうか? この時点での主な関心事は、 がから返された配列では機能しないのに、他の配列 (連想、多次元、またはそうでない) では正常に機能する理由です。データベースから返された値について、これを実行できない原因はありますか? 何でも大歓迎です、私は本当にこれにこだわっています!product_idproduct_id<img>preg_replace()mysql_fetch_array()

4

1 に答える 1