我有这个字符串
$ s ='FX67KU373确认。您从JANE DOE收到了USD85.00 44587398于2014年4月11日下午5:48新Tigo余额为USD92.00。保证金 在Tigo';
在我的php脚本中用于测试目的。在生产中,我正在从数据库中获取字符串,如此
$dbh = new PDO('mysql:host=localhost;dbname=app', 'root', '123456');
$fc = $dbh->prepare("select one from t_data where id = 1084");
$fc->execute();
$s = $fc->fetchColumn(0);
echo $s;
s
显示我从数据库中获取的字符串,该字符串与我的php脚本上的字符串相同。但是,当我
$matches = array();
preg_match('/from (.*?) on/', $s, $matches);
echo '<br/><br/>';
var_dump($matches);
$matches
对于从数据库中提取的字符串为空,而对于我的脚本中的值不为空。为什么会这样?
这就是数据库中的字符串看起来完全正好
$s = 'FX67KU373 Confirmed.
You have received USD85.00 from
JANE DOE 44587398
on 4/11/14 at 5:48 PM
New Tigo balance is USD92.00.Save money on Tigo';
答案 0 :(得分:3)
您的字符串(在代码中)只是一行:
$s = 'GK52RY410 Confirmed. You have received Ksh110.00 from JANE DOE 448909294 on 3/2/15 at 7:50 PM New Tigo balance is USD110.00.Pay Bills via Tigo';
如果从数据库中查看输出,您会注意到字符串中有换行符(我假设您提供的粘贴,可能不是这种情况):< / p>
FX67KU373 Confirmed.
You have received USD85.00 from
JANE DOE 44587398
on 4/11/14 at 5:48 PM
New Tigo balance is USD92.00.Save money on Tigo
因此,您的模式很简单,因为它只在from
和on
您应该使用\s+
,因此'/from\s+(.*?)\s+on/'
from\s+(.*?)\s+on
答案 1 :(得分:-1)
尝试在模式上添加g或i选项,如:“/ test / i”