0

在正则表达式方面需要帮助。

1) 格式:

 Advisor Geologist – HighMount Exploration & Production LLC – Oklahoma City, OK

我想获取最后一个字符和破折号之间的文本。IE。Oklahoma City, OK. 请注意,文本可能包含多个破折号。

试过这个:

~-([.*$]+)~

试图在破折号和字符串结尾 (.*$) 之间找到。需要知道如何检查最后一次出现的破折号。

4

4 回答 4

8

您不需要正则表达式,explode()破折号上的字符串,并取最后一个元素。

$str = 'Advisor Geologist – HighMount Exploration & Production LLC – Oklahoma City, OK';
$arr = explode( '–', $str);
$last = trim( end( $arr));
echo $last;

效率更高。

于 2012-11-19T16:58:04.667 回答
1

如果您需要使用正则表达式,请使用

$pattern = '/[^\s–-][^–-]*?(?=\s*$)/';
preg_match($pattern, $subject, $matches);

在这里测试这个演示。

于 2012-11-19T17:12:59.543 回答
0

strrpos ()也可以提供帮助。

 $str = 'Advisor Geologist – HighMount Exploration & Production LLC – Oklahoma City, OK';
 $result = trim(substr($str, strrpos($str, '-')+1));

对于固定格式,您可以使用list() & explode()

 $str = 'Advisor Geologist – HighMount Exploration & Production LLC – Oklahoma City, OK';
 list($occupation, $company, $city) = explode('-', $str);
于 2012-11-19T17:44:20.733 回答
0
于 2012-11-19T17:23:28.193 回答