2017-03-06 5 views
0

以下は私のコードですが、私がやっていることを行うには理想的ではないし、サイトの速度を遅くするかもしれません。 このコードをどのようにしてコンパクトで清潔にすることができるか理解してください。 この場合、str_replace()の代替手段はありますか?ここで文字列の代わりに関数をコンパクトにするために置き換えます

<?php 
 
    $linkTemp = str_replace("<span class='codeSmall'>", "", $question); 
 
    $linkTemp = str_replace("</span>", "", $linkTemp); 
 
    $linkTemp = str_replace(" ", "-", $linkTemp); 
 
    $linkTemp = str_replace("?", "", $linkTemp); 
 
    $linkTemp = str_replace("'", "", $linkTemp); 
 
    $linkTemp = str_replace('"', "", $linkTemp); 
 
    $linkTemp = str_replace("(", "", $linkTemp); 
 
    $linkTemp = str_replace(")", "", $linkTemp); 
 
    //many similar lines of code 
 
?>

答えて

1

2種類の方法があります。あなたのためにうまくいく方法を選んでください。

1最初の方法

str_replaceは配列で機能します。それぞれの行を取り出し、適切な部分を適切な配列に配置します。例えば

$linkTemp = str_replace(" ", "-", $linkTemp); 

ザ・ "" 古い配列になります。 " - "が新しい配列に入ります。変数の名前をnewとoldにする必要はありません。あなたの好きな名前を付けてください。

これを行うもう1つの方法は、これらを模擬的な置き換えに分割することです。たとえば、 ""で置き換えられるものはすべて1つのセクションに入れることができます。すべてが " - "で置き換えられます。そして、各ループ

// for testing 
$question = "I like cheese and milk"; 
$old = array("<span class='codeSmall'>",'</span>',' ','?',"'",'"',"(",")"); 
$new = array('','','-','',"",'',"",""); 
$linkTemp = str_replace($old, $new, $question); 
echo $linkTemp; 

2第二の方法のために行う

echo "<hr><p>Second way</p>"; 

$question2 = "I like cheese and milk. (Do you)?"; 
$toDashes = array(' '); 
foreach ($toDashes as $item) { 
    $question2 = str_replace($item, "-", $question2); 
} 

$toZeroLengthString = array("<span class='codeSmall'>",'</span>','?',"'",'"',"(",")"); 
foreach ($toZeroLengthString as $item) { 
    $question2 = str_replace($item, "", $question2); 
} 
echo $question2; 
関連する問題