我正在尝试在preg_match_all中使用$和m修饰符的组合。
preg_match_all('/.y$/m',$text,$matches);
基本上,我正在尝试获取以y结尾的每行的最后2个字母,并且此代码可以在此字符串下正常工作。
$str2 = "helloly\nhelloby\nhelloty\n";
但是当我尝试将其与来自textarea元素的数据一起使用时,我只会得到最后一行。 Heredoc和nowdoc的情况相同。 我想了解如何在Heredoc或textarea中的多行数据上使用带有m修饰符的正则表达式
编辑: 这是iam用于测试的完整代码
该问题似乎与换行符的插入方式有关,因为当我在php文档中更改了行分隔符类型时,heredoc / nowdocs可以正常工作。 但是发布数据仍然只匹配最后一行, 我将添加环境以防万一 Windows 10 x64 OSpanel 5.2.2 Apache 2.4-php7.0-7.1 PHP-7.1_64x
<?php
$str2 = "helloly\nhelloby\nhelloty\n";
$str = <<<HERE
helloly
helloby
helloty
HERE;
$text = $_POST['textarea2'];
$matches=[];
$pr =
var_dump(preg_match_all('/.y$/m',$str,$matches));
var_dump($matches);
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="/" method="post">
<textarea name="textarea2" style="resize:none"></textarea>
<button type="submit">sub</button>
</form>
</body>
</html>