好的,我有一些看起来像这样的.txt文件。
+ Some text
~ Some text
~ more text
~ more text
- more text
- and some text here
我想在新div中包装每一行,但如果行以+开头添加类'add',则 - 添加类'删除',并为〜添加类'edit';
我目前的代码是
$lines = explode("\n", $text);
$out = '';
foreach ($lines as $line) {
if (!empty($line)) {
if ($line[0] == "+") {
$out .= "<div class='add'>$line</div>";
}
elseif ($line[0] == "-") {
$out .= "<div class='removed'>$line</div>";
}
elseif ($line[0] == "~") {
$out .= "<div class='edit'>$line</div>";
}
elseif ($line[0] == "\t") {
if ($line[1] == "+") {
$out .= "<div class='add'>$line</div>";
}
elseif ($line[1] == "-") {
$out .= "<div class='removed'>$line</div>";
}
elseif ($line[1] == "~") {
$out .= "<div class='edit'>$line</div>";
}
}
}
}
这可以胜任,但我想要一个更优雅的解决方案,任何想法?
答案 0 :(得分:3)
你可以使用这样的数组:
$cssClass = array('+' => 'add', '-' => 'remove', '~' => 'edit');
然后
$out .= "<div class='".$cssClass[$line[0]]."'>$line</div>";
没有if或switch。
答案 1 :(得分:1)
您可以尝试switch
$line = ($line[0] == "\t") ? $line[1] : $line[0];
switch($line){
case '+' : $class="add" ; break;
case '~' : $class="edit" ; break;
case '-' : $class="removed"; break;
default : $class="";
}
$out .= "<div class='$class'>$line</div>";