0

スクリプトを書き込もうとしていますが、行き詰まり続けています。

変数があります$message。解析したいです。*と*の間に含まれるすべてのものが異なる色になるようにします。例えば:

This is message * 1

影響を受けません。だが

This is a *message* see how it works *again here*.

持っているmessageagain hereは別の色になります。

4

5 に答える 5

2

regexpes付き:

$in = 'This is a *message* see how it works *again here*.';
$out = preg_replace('/\*([^*]+)\*/', '<span class="color">$1</span>', $in);
print $out;

欲張りでないマッチより少し速い。

于 2012-09-04T14:28:34.700 に答える
1

explodeアスタリスクで文字列を分割するために使用します。その後、配列内の各要素を出力し、その間に適切なマークアップを入れて色を変更できます。

このようなもの:

$parts = explode('*', $message);

$italic = false;
for ($part in $parts)
{
  if ($italic) 
    echo '<i>' . $part . '</i>';
  else 
    echo $part;

  $italic = !$italic;
}
于 2012-09-04T14:23:58.017 に答える
1

私はの使用をお勧めしますpreg_replace()

$message = preg_replace("#\*(.*?)\*#", "<span class=\"color-red\">\\1</span>", $message);
于 2012-09-04T14:27:41.127 に答える
0
$output = preg_replace('/\*([^*]+)\*/', '<em>$1</em>', $message);

また

$output = preg_replace('/\*(.+?)\*/', '<em>$1</em>', $message);
于 2012-09-04T14:26:32.493 に答える
0
$message = 'This is a *message* see how it works *again here*.';
$colorMessage =  preg_replace('/\*([^\*]+|[\w]+)\*/', "<span class='color2'>$0</span>", $message);
于 2012-09-04T15:43:23.477 に答える