0
$xcatname = 'Business';
$repeatmaincitiescat = 'London, Paris, New York';

$repeatmaincitiescat = str_replace(',', ' ' . $xcatname . ',', $repeatmaincitiescat).(empty($repeatmaincitiessubcat)?'':"");

この結果を与える上記のコード:ロンドン ビジネス、パリ ビジネス、ニューヨーク ビジネス

ただし、このタイプの出力が必要です。

ロンドンでのビジネス、パリでのビジネス、ニューヨークでのビジネス

いくつかの変更を試みましたが、エラーであることが判明しました。

4

3 に答える 3

2

単純なマッピングはどうですか?

$xcatname = 'Business in %s';
$repeatmaincitiescat = 'London, Paris, New York';
$separator = ', ';
$repeatmaincitiescat = implode(
    $separator,
    array_map(function($v) use ($xcatname) {
            return sprintf($xcatname, $v);
        },
        explode($separator, $repeatmaincitiescat))
);

echo $repeatmaincitiescat;

出力:

Business in London, Business in Paris, Business in New York

そして、ここに PHP 5.2 バリアントがあります:

$xcatname = 'Business in %s';
$repeatmaincitiescat = 'London, Paris, New York';

$new = new MaskRepeat($repeatmaincitiescat, ', ', $xcatname);
echo $new; # Business in London, Business in Paris, Business in New York

class MaskRepeat {
    private $str;
    public function __construct($string, $separator, $mask) {
        $array = explode($separator, $string);
        foreach($array as &$value) {
            $value = sprintf($mask, $value);
        }
        $this->str = implode($separator, $array);
    }
    public function __toString() {return $this->str;}
}
于 2012-04-13T22:16:16.480 に答える
1

hakre が提案した方法に代わる方法は、正規表現を使用することです。コードに到達できる限り近いものであり、達成したいことは単純な置換では実行できません。

したがって、次のことができます (自分が行ったことにできるだけ近づけるために):

<?php
$xcatname = 'Business';
$repeatmaincitiescat = 'London, Paris, New York';

$pattern = '/([^,]+)((,\s*)*)/';

function replace_match($matches) {
    global $xcatname;
    return $xcatname . ' in ' . $matches[1] . $matches[2];
}

$processed = preg_replace_callback($pattern, "replace_match", $repeatmaincitiescat);
// or simpler:
// $processed = preg_replace($pattern, $xcatname . " in  $1$2", $repeatmaincitiescat);
?>
于 2012-04-13T22:58:09.197 に答える
0

$ xcatname='ビジネスイン'; $ repeatmaincitiescat ='ロンドン、パリ、ニューヨーク';

$ repeatmaincitiescat = "$ xcatname" .str_replace('、'、'、'。$ xcatname。''、$ repeatmaincitiescat)。(empty($ repeatmaincitiessubcat)?'': "");

echo $repeatmaincitiescat ;
于 2012-04-13T23:15:00.283 に答える