3

からの言葉を入れるとボンジュールに置き換わるよう$helloにしたいのですがうまくいきません。これを行うにはどうすればよいですか?$words

コード:

<?php
$words = $_POST['words'];
$hello = array('hello', 'hi', 'yo', 'sup');
$words = preg_replace('/\b'.$hello.'\b/i', '<span class="highlight">Bonjour</span>', $words);
echo $words;
?>
4

3 に答える 3

2

パターンに配列を渡しています。これは文字列でなければなりません。ただし、次のように内破できます。

$words = 'Hello world';
$hello = array('hello', 'hi', 'yo', 'sup');
$words = preg_replace('/\b('.implode('|', $hello).')\b/i', '<span class="highlight">Bonjour</span>', $words);
echo $words;
于 2013-02-19T13:19:46.280 に答える
0

パターンの配列を渡すかどうかを決定する必要がありますpreg_replace

$hello = array('/\bhello\b/i', '/\bhi\b/i', '/\byo\b/i', '/\bsup\b/i');

または単一のパターン、つまりORによる:

'/\b('.join('|', $hello).')\b/i'

現在渡しているのは、次のような文字列です。

'/\bArray\b/i'
于 2013-02-19T13:19:16.323 に答える
0
$words = "Would you like to say hi to him?";
$hello = array('hello', 'hi', 'yo', 'sup');
$pattern = "";
foreach ($hello as $h)
{
    if ($pattern != "") $pattern = $pattern . "|";
    $pattern = $pattern . preg_quote ($h);
}
$words = preg_replace ('/\b(' . $pattern . ')\b/i', 'Bonjour', $words);
于 2013-02-19T13:21:14.620 に答える