У меня есть следующая программа PHPкартина не соответствует, когда описание берется из базы данных
<?php
$pattern = "/.*PURCHASE.*?\d{2}\w{3}\s(.*)Ref:.*/";
$description = "PURCHASE Card no.: XXXXXXXXXXXXXXXX 13MAR IDEAMONEY MUMBAI Ref: 031352203423 ";
if(preg_match($pattern,$description,$matches))
{
print_r($matches);
}
?>
это дает точный вывод как
Array ([0] => PURCHASE Card no.: 5497XXXXXXXX1502 13MAR IDEAMONEY MUMBAI Ref: 031352203423 [1] => IDEAMONEY MUMBAI)
, но проблема в том, когда я сохранить содержимое $ description в mysql DB и получить то же самое и выполнить шаблон, соответствующий его несоответствию.
мой новый код выглядит следующим образом
<?php
$pattern = "/.*PURCHASE.*?\d{2}\w{3}\s(.*)Ref:.*/";
include 'dbconnection.php';
$conn = get_dbConnection();
$query1 = "select * from MY_TABLE_NAME";
$stmt = $conn->query($query1);
while($result=$stmt->fetch())
{
$description = $result['MY_COLUMN_NAME'];
if(preg_match($pattern,$description,$matches))
{
print_r($matches);
}
?>
он принимает такое же содержание описания из базы данных, но его не соответствия.
Если я заменить выше $ шаблон на
$pattern = "/.*/";
он дает выход в
Array ([0] => PURCHASE Card no.: 5497XXXXXXXX1502 13MAR IDEAMONEY)
вместо придания
Array ([0] => PURCHASE Card no.: XXXXXXXXXXXXXXXX 13MAR IDEAMONEY MUMBAI Ref: 031352203423)
поэтому проблема, почему согласование не случается, это пренебрежение текстом после IDEAMONEY само по себе.
как решить это ?????
ли сохранен в базе данных в качестве законченной строки? Это кажется наиболее очевидным здесь. – Andreas
yess сохраняется так же, как я упомянул в переменной $ description – aries12
Вы уверены, что «пробел» перед 'MUMBAI' не является символом линии? Если вы добавите «s» в конце регулярного выражения, как это: '/.* PURCHASE. *? \ D {2} \ w {3} \ s (. *) Ссылка:. */S', делает это работать тогда? – trincot