1

大文字の一致を太字に変更する必要がありますが、コロンを含みます

$str = "GOOD MORNING:";
preg_replace("/\b([A-Z]{2,}(\s[A-Z]{2,})?)\b/", "<b>$1</b>", $str);

戻ります:

<b>GOOD MORNING</b>:

返されるはずです:

<b>GOOD MORNING:</b>

私の試みはすべて、私の交換が機能しなくなった

4

4 に答える 4

1

文字クラスにコロンを追加する必要があります。または、キャプチャ グループの閉じ括弧の直前 (オプションの場合は疑問符を使用)。

$str = preg_replace('~[A-Z]{2,}(?:\s[A-Z]{2,})?:?~', '<b>$0</b>', $str);

注意: ここでは単語の境界は必要ありません。正規表現エンジンは左から始まり、量指定子{2,}が貪欲であるためです) 。

于 2013-07-27T19:12:10.910 に答える
0
preg_replace("/([A-Z]{2,}\s[A-Z]{2,}:?)/", "<b>$1</b>", $str);

出力:

<b>GOOD MORNING:</b>
于 2013-07-27T19:16:10.503 に答える
0

いくつかの方法があります。

次のいずれかで十分です。

  1. preg_replace("/([A-Z:]{2,}(\s[A-Z:]{2,})?)/", "<b>$1</b>", $str);
  2. preg_replace("/([A-Z]{2,}(\s[A-Z:]{2,})?)/", "<b>$1</b>", $str);
  3. preg_replace("/([A-Z]{2,}(\s[A-Z]{2,})?:?)/", "<b>$1</b>", $str);

ここに私のテスト出力があります:

<?php
$str = "GOOD MORNING:";
echo preg_replace('/([A-Z:]{2,}(\s+[A-Z:]{2,})?)/', "<b>$1</b>", $str);
echo preg_replace('/([A-Z]{2,}(\s+[A-Z:]{2,})?)/', "<b>$1</b>", $str);
echo preg_replace('/([A-Z]{2,}(\s+[A-Z]{2,})?:?)/', "<b>$1</b>", $str);
?>

ミゼット:~ masud$ php foo.php

<b>GOOD MORNING:</b><b>GOOD MORNING:</b><b>GOOD MORNING:</b>
于 2013-07-27T19:21:47.847 に答える
0

これを試してみてください、これはあなたのために働くでしょう、

$str = "GOOD MORNING";
preg_replace("/\b([A-Z]{2,}(\s[A-Z]{2,})?)\b/", "<b>$1:</b>", $str);
于 2013-07-27T19:17:56.433 に答える