私はグラブしようとしています件名です。正規表現は単語間で検索しますが、検索語は返しません。
これは動作します。このような
preg_match_all('/Subject:(.*?)Date:/', $theEmail, $subjects);
しかしリターン:
"Subject:This is my subject!Date:"
私が欲しい
だけこれが私の主題であります!私が読んだことによると、それは私が得なければならないものです。私は何が欠けていますか?
私はグラブしようとしています件名です。正規表現は単語間で検索しますが、検索語は返しません。
これは動作します。このような
preg_match_all('/Subject:(.*?)Date:/', $theEmail, $subjects);
しかしリターン:
"Subject:This is my subject!Date:"
私が欲しい
だけこれが私の主題であります!私が読んだことによると、それは私が得なければならないものです。私は何が欠けていますか?
あなたは
$theEmail = "Subject:This is my subject!Date:";
preg_match_all('/Subject:(.*?)Date:/', $theEmail, $subjects);
print_r($subjects[1][0]);
として値にアクセスするために
subjects[1][0]
を使用することができます
あなたがpreg_match_all
を使用し、$subjects
は、すべての可能な一致を含む配列の配列であるが、最初の試合は、すなわち$subjects[0][0]
かかわらず、常に任意のキャプチャグループの
あなたの答えと私の違いを教えてもらえますか? 'echo'の代わりに' print_r'ですか? –
@PedroLobito実際に私はコメントに答えを書いていました。だから、ここに答えるのに時間がかかりました。あなたは私にそれを打ちました。私は今、いくつかの説明を追加しました。 – rock321987
フェア十分! ;) –
rock321987さんのコメント以外の解決方法は、look-around
のようなアサーションを表示することです。
正規表現:(?<=Subject:)(.*?)(?=Date:)
PHPのコード:
<?php
$theEmail = "Subject:This is my subject!Date:";
preg_match_all('/(?<=Subject:)(.*?)(?=Date:)/', $theEmail, $subjects);
print_r($subjects[0]);
?>
すなわち、出力するだけのキャプチャグループ$subjects[1][0]
をお試しください:
$theEmail = "Subject:This is my subject!Date:";
preg_match_all('/Subject:(.*?)Date:/', $theEmail, $subjects);
$theSubject = $subjects[1][0];
echo $theSubject;
//This is my subject!
DEMO
'$科目[マッチした文字列全体です1] [0] 'うまくいく – rock321987