0

現在、PHP と WordPress を使用しています。基本的には、以下のコードを実行して、テキストをテキストに置き換える必要があり$current_pathます。$new_path$current_path$content

これをこのように何度も実行するのではなく、配列を反復処理できるようにしたいですか、それともより良い方法があればいいでしょうか?

$content = 'www.domain.com/news-tag/newstaghere'

$current_path = 'test-tag';
$new_path = 'test/tag';
$content = str_replace($current_path, $new_path, $content);

$current_path = 'news-tag';
$new_path = 'news/tag';
$content = str_replace($current_path, $new_path, $content);

$current_path = 'ppc-tag';
$new_path = 'ppc/tag';
$content = str_replace($current_path, $new_path, $content);
4

4 に答える 4

2
$content = 'www.domain.com/news-tag/newstaghere'

$current_paths = array('test-tag','news-tag','ppc-tag');
$new_paths = array('test/tag','news/tag','ppc/tag';
$content = str_replace($current_paths, $new_paths, $content);
于 2013-04-29T01:10:38.277 に答える
2

str_replace()配列引数を受け入れます:

$current_paths = array('test-tag','news-tag','ppc-tag');
$new_paths = array('test/tag','news/tag','ppc/tag');
$new_content = str_replace($current_paths, $new_paths, $content);

または、次のように単一の配列を使用できますstrtr()

$path_map = array('test-tag'=>'test/tag', 'news-tag'=>'news/tag', 'ppc-tag'=>'ppc/tag');
$new_content = strtr($content, $path_map);

ただし、非常に一般的なことをしているようです。多分あなたが必要とするのは正規表現だけですか?

$new_content = preg_replace('/(test|news|ppc)-(tag)/u', '\1/\2', $content);

または多分ただ

$new_content = preg_replace('/(\w+)-(tag)/u', '\1/\2', $content);
于 2013-04-29T01:16:43.703 に答える
0

次の PHP.net ページに記載されているように、str_replace 関数に配列引数を指定できます:
http://php.net/manual/en/function.str-replace.php

詳細については、上記のリンク先のページの「例 #2」を参照してください。

于 2013-04-29T01:10:08.450 に答える
0

出来るよ:

$content = 'www.domain.com/news-tag/newstaghere';
$content = preg_replace('~www\.domain\.com/\w++\K-(?=tag/)~', '/', $content);
于 2013-04-29T01:20:05.920 に答える