次のようにフォーマットされた多くの日付を含む大きなテキストがあります。
10 april 2012, monday
それらすべてを次の形式に変換する必要があります。
\r\nmonday, 10 april 2012
それで、私は正規表現を書きました、そしてそれは完全にうまくいきます。
$matches1= preg_replace(
'#(\d{,2} [a-z]+) \d{4}, (sunday|monday|tuesday|wednesday|thursday|friday|saturday)#u',
"\r\n$2$3$4$5$6$7$8, $1",
$txt);
問題は、置換パターン "\r\n$2$3$4$5$6$7$8, $1" (2012 年 4 月 10 日 \r\nmonday など) に一致するテキストの変換された部分もすべて保存する必要があることです。配列。私はこのようなものを持っているように:
Array('\r\nmonday, 10 april 2012', '\r\ntuesday, 11 april 2012', '\r\nfriday, 14 april 2012' etc.)
それは可能ですか?
置換パターン ("\r\n$2$3$4$5$6$7$8, $1") は html フォームからのものであり、異なる場合があります。
アップデート
コールバック関数を作成しようとしましたが、必要な結果が得られませんでした。だから私は次のことを思いついた:
$text = ...;//some text
$search = ...;//search pattern
$replacement = ...;//replacement pattern
preg_match_all('#' . $search. '#u', $text, $matches, PREG_SET_ORDER);
foreach ($matches as $match)
{
$replacements[] = preg_replace('#' . $search. '#u', $replacement, $match[0]);
}
$newtext = preg_replace('#' . $search. '#u', $replacement, $text);
したがって、$newtext には変換されたテキストが含まれ、$replacenemts にはすべての置換が含まれます。