|
|
|
| Есть код:
$text="We have received an order for product simply
Reference Number :23089238
Order Date :10/22/2007 23:35
Plimus Product :27360 - simply
Plimus Contract :1644316 - Full Version
Number of licenses :1
CD on demand :No
Total :19.95
Referrer :http://www.sss.com/order/order_=m
Remote Address :211.74.210.103
Country by ip address:Taiwan
custom1: BITRIX_SM.MjE3MTE0OS4xODE3NDkyLlRXLjQ0LlkuZW4=
Payment Type :CC
User Data:
Title :
Last Name :CHANG
First Name :HsiuHao
Company :
Address1 :No.5, Alley 2, Lane 461, Dingciang St., Sanmin District, Kaohsiung City 807, Taiwan (R.O.C.)
Address2 :
City :Kaohsiung City
State :--
Zip Code :807
Country :tw (Taiwan)
Email :bananaguy@gmail.com
Work Phone :886939335475
Work Phone Extension :
Mobile Phone :
Fax Number :
Home Phone :
Plimus Account ID :14934972
We supplied the following license code and sent it to the user:
14BEC3D2A41135461C5C52F9380A3C
Order information link: https://www.pnhrtsg.com/0F1
Best regards,
The Crach Team
http://www.crach.com";
$text = rtrim(ltrim(strtoupper($text)));
$text = eregi_replace(' ', '', $text);
$text = eregi_replace("\\$", '', $text);
$n = preg_match_all("/^WEHAVERECEIVEDANORDERFORPRODUCT.*REFERENCENUMBER:.*ORDERDATE:.*PLIMUSPRODUCT:.*PLIMUSCONTRACT:.*NUMBEROFLICENSES:.*CDONDEMAND:.*TOTAL:.*REFERRER:.*REMOTEADDRESS:.*COUNTRYBYIPADDRESS:.*CUSTOM1:.*PAYMENTTYPE:.*USERDATA:.*TITLE:.*LASTNAME:.*FIRSTNAME:.*COMPANY:.*ADDRESS1:.*ADDRESS2:.*CITY:.*STATE:.*ZIPCODE:.*COUNTRY:.*EMAIL:.*WORKPHONE:.*WORKPHONEEXTENSION:.*MOBILEPHONE:.*FAXNUMBER:.*HOMEPHONE:.*PLIMUSACCOUNTID:.*WESUPPLIEDTHEFOLLOWINGLICENSE.*BESTREGARDS,.*THEPLIMUSTEAM.?HTTP:.??WWW.*COM/", $text, $matches, PREG_PATTERN_ORDER);
|
Помогите, пожалуйста, исправить регулярное выражение, чтобы $n=1. То есть мне нужно выяснить походит ли $text к шаблону с данными фразами в таком порядке. | |
|
|
|
|
|
|
|
для: vzhik
(28.11.2008 в 13:11)
| | Для чего проверять начинается-ли текст с We have received an order for product ?
Может быть просто нужно определить присутствуют-ли и какие обязательные параметры
начинающиеся с начала строки и имеющие значения после двоеточия
, или всё перечисленное в выражении обязательно?
а так похоже что нехватает модификатора /s ,
т.к. все эти $text = eregi_replace(' ', '', $text);
, $text = eregi_replace("\\$", '', $text);
не удаляют переносов строк, и .* не совпадает, | |
|
|
|
|
|
|
|
для: xx77
(28.11.2008 в 20:51)
| | Вы правы - ^ в принципе ни к чему.
А далее: я этим выражением проверяю, удовлетворяет ли $text моему шаблону. Т.е. в $text должны встречаться эти фразы в указанном порядке, а что между ними не важно.
Я понимаю, что проблема именно в переносе строк в $text. Не подскажете, как их убрать или учесть в preg_match_all()? | |
|
|
|
|
|
|
|
для: vzhik
(01.12.2008 в 12:30)
| | Совсем непонимаю зачем такое может понадобиться ,
если например должен быть какой-то обязательный параметр,
то он и должен быть строго например e-mail , а не e---mail или email,
взависимости от того как вздумалось программе или ещё чему-то вписать его.
с этим текстом многое может совпадать
например
<?
$b = '\s*:';
$a = '(?>[^\n]*\n)+?';
$c = $b.$a; // подстроки предшевствующие нужным параметрам
// которые начинаются с начала строки
// (включая ": " после пердыдущих параметров)
$s = '\x20*'; // пробелы которые почему-то не нужны,
preg_match("
~^${a}
REFERENCE${s}NUMBER${c}
ORDER${s}DATE${c}
PLIMUS${s}PRODUCT${c}
PLIMUS${s}CONTRACT${c}
NUMBER${s}OF${s}LICENSES${c}
CD${s}ON${s}DEMAND${c}
TOTAL${c}
REFERRER${c}
REMOTE${s}ADDRESS${c}
COUNTRY${s}BY${s}IP${s}ADDRESS${c}
CUSTOM1${c}
PAYMENT${s}TYPE${c}
USER${s}DATA${c}
TITLE${c}
LAST${s}NAME${c}
FIRST${s}NAME${c}
COMPANY${c}
ADDRESS1${c}
ADDRESS2${c}
CITY${c}
STATE${c}
ZIP${s}CODE${c}
COUNTRY${c}
EMAIL${c}
WORK${s}PHONE${c}
WORK${s}PHONE${s}EXTENSION${c}
MOBILE${s}PHONE${c}
FAX${s}NUMBER${c}
HOME${s}PHONE${c}
PLIMUS${s}ACCOUNT${s}ID${c}
WE${s}SUPPLIED${s}THE${s}FOLLOWING${s}LICENSE${a}
BEST${s}REGARDS${s},${a}
THE${s}[A-Z]+${s}TEAM${a}
HTTP://(?:WWW\.)?[\-0-9A-Z]+\.COM$
~ix",
trim($text), $matches);
print_r($matches);
// добавил модификатор x только для читаемости
?>
| , но мне этого не понять | |
|
|
|