我需要转换
"01,02,03,04,05,07:01"
为:
<b>07</b><b>09</b><b>30</b><b class="color_blue_ball">11</b>
也就是说,在:
之前用<b></b>
包裹,:
之后用<b class="color_blue_ball"></b>
包裹。如果没有:
,则所有内容都应包含<b></b>
任何人都知道如何做到这一点?
答案 0 :(得分:5)
不需要正则表达式:
echo '<b>' . str_replace(array(',', ':'), array('</b><b>', '</b><b class="color_blue_ball">'), "01,02,03,04,05,07:01") . '</b>';
编辑:如果“01,02,03,04,05,07:01,04,06”有效,那么添加相同的想法explode
:
$parts = explode(':', "01,02,03,04,05,07,01,04:06");
echo '<b>' . str_replace(',', '</b><b>', $parts[0]) . (isset($parts[1]) ? str_replace(',', '</b><b class="color_blue_ball">', ',' . $parts[1]) : '') . '</b>';
答案 1 :(得分:2)
我不知道这是否是最好的方法,但我可能会在:
,然后在,
上拆分字符串,然后分别处理每个部分并加入它们回到一起。
答案 2 :(得分:2)
更冗长:
<?php
function wrapValues($array, $wrapper) {
$result = array();
foreach ($array as $elem) {
$result []= str_replace('?', $elem, $wrapper);
}
return implode('', $result);
}
$values = "01,02,03,04,05,07:01,02";
$firstWrapper = '<b>?</b>';
$secondWrapper = '<b class="color_blue_ball">?</b>';
list($first, $second) = explode(':', $values);
echo wrapValues(explode(',', $first), $firstWrapper) .
wrapValues(explode(',', $second), $secondWrapper);