模式中可能有新行的PHP正则表达式主题

模式中可能有新行的PHP正则表达式主题,php,regex,preg-match,newline,Php,Regex,Preg Match,Newline,我有以下代码,它是从存储在变量中的电子邮件中提取的: $string = '<td colspan=3D"2"><span style=3D"display: none;">CORRES PONDANCE_ID:4</= span> <span style=3D"display: none;">CONFIRMATION_NUMBER:9986337900</s= pan></td><td colspan=3D"2"&g

我有以下代码,它是从存储在变量中的电子邮件中提取的:

$string = '<td colspan=3D"2"><span style=3D"display: none;">CORRES
PONDANCE_ID:4</=
span> <span style=3D"display: none;">CONFIRMATION_NUMBER:9986337900</s=
pan></td><td colspan=3D"2"><span style=3D"display: none;">CORRESPO
NDANCE_ID:4</=
span> <span style=3D"display: none;">CONFIRMATION_NUMBER:9986337900</s=
pan></td>';

preg_match('/CORRESPONDANCE_ID:([0-9]+)/', $string, $id_matches);


print_r($id_matches); 
$string='CORRES
PONDANCE_ID:4确认号:9986337900 correspo
确认号:4确认号:9986337900';
preg_match('/CORRESPONDANCE_ID:([0-9]+)/',$string,$ID_matches);
打印($id\u匹配项);
如果有一个新行将正在搜索的字符串中的模式拆分,我无法找到一种方法来匹配子模式中的CORRESPONDANCE_ID或数字

我曾尝试在模式的末尾使用x和s修改器,但没有效果


谁能帮我完成这个任务?谢谢

必须使用换行符替换换行符,例如

preg_match_all('/CORRESPONDANCE_ID:([0-9]+)/', 
               preg_replace('/\r?\n/', "", $string), $id_matches);
或将以下字符添加到正则表达式模式:

preg_match_all('/[A-Z\r\n]+_ID:([0-9]+)/', $string, $id_matches);

在这两种情况下,
$string
变量都没有被修改。

在应用正则表达式之前,可以删除“新行”。。。这会有帮助:谢谢你,这是一个很好的建议。我想在解析字符串之前执行preg_匹配,因为它是一封电子邮件,我不想改变它的结构。因为有些电子邮件可能有附件,我不确定这是否是一个好主意…只需使用
$string=preg\u replace('/\s+/',''$string)在preg_match()之前,它就像一个符咒。谢谢你,阿尔克斯扎尔。非常感谢!