2017-03-06 75 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

這裏有兩種不同的方式。選擇一種適合您的方式。

1第一種方法

str_replace與數組一起使用。採取每一行,並將適當的部分放入適當的數組中。

例如:

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

的 「」 進入舊數組。 「 - 」進入新陣列。變量不必被命名爲新舊。給他們任何你喜歡的名字。

做到這一點的另一種方法是將它們分解爲相似的替代品。例如,將被替換爲「」的所有內容都可以放在一個部分中。一切都用另一個「 - 」替代。然後,每個迴路

// 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;