0

Php.netにはこのpreg_replaceスニペットがありました

$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);

このようなことをするために $patterns で preg_match を実行する方法はありますか

$string で preg_match が見つかった場合、preg_replace の場合、一致するものが見つかりませんでした

ありがとう。

4

2 に答える 2

2

あなたがしたいのは、preg_replace一致しなかったことを警告する を持っていることだけですか?

以下はあなたのために働くでしょう:

$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/pig/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';

for($i=0;$i<count($patterns);$i++){
    if(preg_match($patterns[$i], $string))
        $string = preg_replace($patterns[$i], $replacements[$i], $string);
    else
        echo "FALSE: ", $patterns[$i], "\n";
}
echo "<br />", $string;

/**

Output:

FALSE: /pig/
The slow black fox jumped over the lazy dog.
*/

$string = preg_replace($patterns, $replacements, $string, -1, $count);
if(empty($count)){
    echo "No matches found";
}
于 2013-09-24T08:42:07.743 に答える
1

これはあなたが探している場所ですか?

    $string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';

foreach ($patterns as $pattern) {
  if (preg_match("/\b$pattern\b/", $string)) {
    echo preg_replace($pattern, $replacements, $string);
      }
}
于 2013-09-24T08:24:48.713 に答える