2016-10-27 2 views
1

タイムコードをショートコードに変更しています。すでにコードがあります。タイムスタンプをショートコードに変更する

$pattern = '/(\d{1,2}:\d{2}(?::\d{2})?)(?!.*?["\'])/'; 
$replacement = '[spp-timestamp time="${1}"]'; 
$foundTimestamp = preg_replace ($pattern,$replacement, $content); 

いずれも完璧です。

しかし、私は午前が含まれている選択したタイムスタンプを望んでいない、例えば午後

午前1時午前または午後12時01分00秒午前01:00午後または午後12時01分00秒午後事前に

感謝。

+1

plzはあなたのクイックヘルプ:)のための1つまたは2つのサンプルの入力と出力 –

答えて

1

あなたは$0全体マッチ後方参照です[spp-timestamp time="$0"]と交換

'~(?<!:)\d{1,2}:\d{2}(?::\d{2})?(?!(?::\d{2})?\s*[ap]\.?m\.?)(?!.*?["\'])~i' 

を使用することができます。

が最初の1桁または2桁の前に:であり、時間が後(別売ドット付き)PMまたはAMを持っている場合は否定先読み(?!(?::\d{2})?\s*[ap]\.?m\.?)が一致して失敗した場合regex demo

初期否定後読みが一致して失敗を参照してください。 。

PHP demo

$re = '/(?<!:)\d{1,2}:\d{2}(?::\d{2})?(?!(?::\d{2})?\s*[ap]\.?m\.?)(?!.*?["\'])/i'; 
$str = '34:67:56 01:00am or 00:01:00am and 01:00pm or 00:01:00pm'; 
$result = preg_replace($re, '[spp-timestamp time="$0"]', $str); 
echo $result; 
// => [spp-timestamp time="34:67:56"] 01:00am or 00:01:00am and 01:00pm or 00:01:00pm 
+1

感謝を追加 –

関連する問題