わかりましたので、理由はわかりませんが、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 を使用しようとしています。助けてください!私は本当に行き詰まっています.....