2017-03-06 69 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;