我正在尝试从电子邮件正文中提取$text = "some text";
$PHPWord->addFontStyle('r2Style', array('bold'=>false, 'italic'=>false, 'size'=>12));
$PHPWord->addParagraphStyle('p2Style', array('align'=>'center', 'spaceAfter'=>100));
$section->addText($text, 'r2Style', 'p2Style');
。以下是我到目前为止的情况:
From:address
我想获得第一次出现$string = "From: user1@somewhere.com This is just a test.. the original message was sent From: user2@abc.com";
$regExp = "/(From:)(.*)/";
$outputArray = array();
if ( preg_match($regExp, $string, $outputArray) ) {
print "$outputArray[2]";
}
任何建议的电子邮件地址吗?
答案 0 :(得分:5)
你的正则表达式过于贪婪:.*
匹配除换行符之外的任何0个或更多字符,尽可能多。此外,在文字值周围使用捕获组没有意义,它会产生不必要的开销。
使用以下正则表达式:
^From:\s*(\S+)
^
确保我们从字符串的开头开始搜索,From:
按字面顺序匹配字符序列,\s*
匹配可选空格,(\S+)
捕获1或更多非空白符号。
请参阅sample code:
<?php
$string = "From: user1@somewhere.com This is just a test.. the original message was sent From: user2@abc.com";
$regExp = "/^From:\s*(\S+)/";
$outputArray = array();
if ( preg_match($regExp, $string, $outputArray) ) {
print_r($outputArray[1]);
}
您要查找的值位于$outputArray[1]
。