1

私は文字列を持っています、それは私が置き換えたいウムラウトと他の文字を含んでいます、今私のコードはそのように見えます:

$string = preg_replace('/( +)|([()])|(\/)/', '_', $string);
$string = preg_replace('/_{1,}/', '_', $string);
$string = preg_replace('/_$/', '', $string);
$string = str_replace('ö', 'oe', $string);
$string = str_replace('ü', 'oe', $string);
$string = str_replace('ä', 'oe', $string);
$string = str_replace('Ä', 'Ae', $string);
$string = str_replace('Ü', 'Ue', $string);
$string = str_replace('Ö', 'Oe', $string);

それを行うより短い方法はありますか?

ありがとう :)

4

3 に答える 3

2

str_replace配列で使用できます:

$find = Array(" ","(",")","/","ö","ü","ä","Ä","Ü","Ö");
$replace = Array("_","_","_","_","oe","oe","oe""Ae","Ue","Oe");
$string = str_replace($find,$replace,$string);
$string = preg_replace("/__+/","_",$string);
$string = rtrim($string,"_");
于 2012-09-17T13:43:30.937 に答える
0

「最も正しい」方法は、PHPのiconv(文字列を要求された文字エンコードに変換する)機能を使用することです...

やりたいことを正確に実行する関数の例:http://php.net/manual/en/function.iconv.php#83238

于 2012-09-17T13:45:33.133 に答える
0

はいあります。1つは、その置換がアプリケーション内の何かを表す場合(たとえば、文字列からスラッグを作成するstring_slug場合)、まず、入力変数を取得して出力を返すことにより、それ自体の関数にラップする必要があります。

function string_slug($string) {

    $string = preg_replace('/( +)|([()])|(\/)/', '_', $string);
    $string = preg_replace('/_{1,}/', '_', $string);
    $string = preg_replace('/_$/', '', $string);

    $string = str_replace('ö', 'oe', $string);
    $string = str_replace('ü', 'oe', $string);
    $string = str_replace('ä', 'oe', $string);
    $string = str_replace('Ä', 'Ae', $string);
    $string = str_replace('Ü', 'Ue', $string);
    $string = str_replace('Ö', 'Oe', $string);

    return $string;
}

ご覧のとおり、コードを関数本体に移動する次に、呼び出す関数ごとに特定の行をグループ化しました。しかし、それは補足としてのみです。

その場合、その置換関数の使用は、負担が少なく簡単です。

$string = string_slug($string);

文字列操作を行うための完璧ではない方法を想像できますか?たった一行で、あなたがやりたいことにぴったりの機能です。

その次に、交換作業を改善する方法について質問しました。それは単なる知識であり、それを行うには多くの方法があります。

まず、使用する2つの関数に関する知識を向上させることができます。これにより、たとえば、正規表現を改良して凝縮する方法や、str_replaceが配列で機能する方法を示すことができます(@Kolnikが例を示していますが、操作の順序は元のコードとは異なります)。

その隣で、そのstr_replace部分は変換テーブルのようなものを実行しています。一方を他方と交換します。これをサポートするPHPの関数は、strtrドキュメントと呼ばれます。

また、PHPファイルを正しいエンコーディングで保存するように注意してください。そうしないと、umlaut置換(Äなど)が機能しない場合があります。

また、音訳ウィキペディアと呼ばれるものについて学びたいと思うかもしれません。

于 2012-09-17T13:59:15.467 に答える