0

正規表現の助けが必要です。

1)フォーマット:

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

最後の文字とダッシュの間のテキストを取得したいのですが。すなわち。Oklahoma City, OK。テキストに複数のダッシュが含まれている場合があることに注意してください。

これを試しました:

~-([.*$]+)~

ダッシュと文字列の終わり(。* $)の間を移動しようとしています。ダッシュの最後の出現をチェックする方法を知る必要があります。

4

4 に答える 4

8

You don't need a regular expression, explode() the string on the dash, and take the last element.

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

Much more efficient.

于 2012-11-19T16:58:04.667 に答える
1

正規表現を使用する必要がある場合は、

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

ここでこのデモをテストします。

于 2012-11-19T17:12:59.543 に答える
0
于 2012-11-19T17:23:28.193 に答える
0

Also strrpos() can help.

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

For fixed formats you can use list() & explode():

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