0

PHP スクリプトによって解析されている注文確認の HTML メールがあります。スクリプトはいくつかのことを正常に実行しますが、メールですべての製品価格を検索し、値が 500 ポンドを超える場合にフラグを設定する方法がわかりません。

基本的には、注文が 500 ポンドを超えた場合にスクリプトから電子メール アラートが送信されるようにしたいと考えています。

以下は私がこれまでに持っているものです。$body は HTML メールの内容です。他のルールが適切に設定されているため、その部分が機能することはわかっています。私の問題は preg_match の $pattern ルールだと思います - 価格値を正しく識別しているとは思いません。

$body で £xx.xx (各 x は数字) の形式のものを検索し、£500 より大きい値が見つかった場合は $temp に 1 を追加する方法はありますか? 私はこれを解決することはできません...

if (stristr($body,'Order Confirmation') !== false) {

    $string = $body;

    $pattern = '/^[0-9]{1,}$/';

    preg_match ($pattern, $string, $matches);

    $temp =  array_filter($matches, function($value) {
        return $value >= 500;
    });

if ($temp >= 1)
{
    $headers = "Content-type: text/html \r\n";
    $headers .= "From: Robot<robot@robot.com>";
    mail('joe@blogs.com','Internet Order Value Over £500', $body, $headers);
}

}
4

1 に答える 1

0

これはあなたが望むことをすると思います。拡張子が php のファイルにコピー アンド ペーストすると、コードが機能するはずです。スクリプト用に少し編集する必要があります。

<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" media="screen" href="bla.css" >
    <script type="text/javascript" src="https:ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>

<body>

<?php

$string = "lots of things here oh look a price in bold <b>£656.00</b> then more things oh wow";

$pattern = '~<b>£([^<]*).([^<]*)</b>~'; //pattern to find the price in-between the <b></b> tags in $string

preg_match ($pattern, $string, $matches);

$price = substr($matches[0],5); // removes the <b>£ bits from the match if present

if ($price >= 500.00) // if statement to determine if greater than a value
{
echo "value is greater than £500";
    }

?>

</body>
</html>
于 2012-06-29T08:39:08.023 に答える