1

私はこのコードを使用し、すべて問題ありません。contains $commentsbetweenから[]テキストを非表示にしますが、他のシンボルからテキストを非表示にしたい. 元。** && ^^ $$ ## // <>. INSTEAD OF を持つために、ここに追加する必要があるもの

Date <20.02.2013> Time [11-00] Name #John#

これを持っています:

Date Time Name 

?

function replaceTags($startPoint, $endPoint, $newText, $source) {
    return preg_replace('#('.preg_quote($startPoint).')(.*)('.preg_quote($endPoint).')#si', '$1'.$newText.'$3', $source);
}

$source= $comments;
$startPoint='[';
$endPoint=']';
$newText='';
echo replaceTags($startPoint, $endPoint, $newText, $source);
4

2 に答える 2

1

あなたはただ変更する必要があります

$startPoint='[';
$endPoint=']';

$startPoint='<';
$endPoint='>';

複数のシンボルを実行するには、次のように関数を複数回呼び出すことができます。

$source= $comments;
$newText='';

$str = replaceTags('[', ']', $newText, $source);
$str = replaceTags('<', '>', $newText, $str);
$str = replaceTags('*', '*', $newText, $str);
$str = replaceTags('&', '&', $newText, $str);
$str = replaceTags('^', '^', $newText, $str);
$str = replaceTags('$', '$', $newText, $str);
$str = preg_replace("/\#[^#]+#)/","",$str);
$str = replaceTags('/', '/', $newText, $str);

// add more here
echo $str;
于 2013-02-26T11:52:09.750 に答える
0

ペアごとにパターンを作成する必要があります。

$pairs = array(
  '*' => '*',
  '&' => '&',
  '^' => '^',
  '$' => '$',
  '#' => '#',
  '/' => '/',
  '[' => ']', // this
  '<' => '>', // and this pairs differently from the rest
);

$patterns = array();

foreach ($pairs as $start => $end) {
  $start = preg_quote($start, '/');
  $end = preg_quote($end, '/');

  $patterns[] = "/($start)[^$end]*($end)/";
}

echo preg_replace($patterns, '', $s), PHP_EOL;
//  not sure what you want here
//  echo preg_replace($patterns, '$1' . $newText . '$2', $s), PHP_EOL;
于 2013-02-26T11:55:22.427 に答える