我有以下mysql php数组结果。
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo '<tr>';
echo "<td> {$row['cust']} </td>".
"<td> {$row['manu']} </td>".
"<td> {$row['model']} </td>".
"<td> {$row['serial']} </td>".
"<td> {$row['capacity']} </td>".
"<td> {$row['firmware']} </td>".
"<td> {$row['deviceid']} </td>".
"<td> {$row['ataver']} </td>".
"<td> {$row['ltime']} </td>".
"<td> {$row['date']} </td>".
"<td> {$row['ourref']} </td>".
"<td> {$row['result']} </td>";
/** foreach($row as $key=>$value) {
echo '<td>',$value,'</td>';
}*/
echo '</tr>';
"<td> {$row['capacity']} </td>".
数组包含
250000000000 bytes [250 GB]
400000000000 bytes [400 GB]
500000000000 bytes [500 GB]
我想删除包括字节在内的所有内容。
所以期望的输出看起来像
250 GB
400 GB
500 GB
如何使用上述代码实现此目的?
提前感谢。
答案 0 :(得分:1)
这很简单,请看这里:
$String = "250000000000 bytes [250 GB]";
$String2 = substr($String, 0, 3); // take the first 3 caracteres
$result = $String2." GB"; // Just add GB after
echo $result;
只需将"<td> {$row['capacity']} </td>".
替换为“
"<td>".substr($String, 0, 3)." GB</td>".
答案 1 :(得分:0)
您可以使用正则表达式来实现此目的:
preg_match('/\[(.*?)\]/', $row['capacity'], $matches);
if (isset($matches[1])) {
$row['capacity'] = $matches[1];
}
echo "<td> {$row['capacity']} </td>";
答案 2 :(得分:0)
有很多方法可以做到这一点,我使用正则表达式捕获括号中的所有内容。
$string = '250000000000 bytes [250 GB]
400000000000 bytes [400 GB]
500000000000 bytes [500 GB]';
preg_match_all('~\[(.*?)\]~', $string, $sizes);
print_r($sizes[1]);
输出:
Array
(
[0] => 250 GB
[1] => 400 GB
[2] => 500 GB
)
Regex101演示:https://regex101.com/r/zR6pU1/1
.
是任何字符,*
是any character
的零次或多次出现,?
在第一次出现下一个字符时停止。 +
可能是一个更好的量词,因此您可以确定其中有某些内容。 +
是一次或多次出现。
使用+
量词,
$string = '250000000000 bytes [250 GB]
400000000000 bytes [400 GB]
500000000000 bytes [500 GB]';
preg_match_all('~\[(.+?)\]~', $string, $sizes);
print_r($sizes[1]);
如果你想更加严格,你甚至可以这样做:
$string = '250000000000 bytes [250 GB]
400000000000 bytes [400 GB]
500000000000 bytes [500 GB]';
preg_match_all('~\[(\d+ [MKG]B)\]~', $string, $sizes);
print_r($sizes[1]);
哪个数字与空格匹配,然后匹配KB,MB或GB。 []
是一个允许内部任何文字字符出现的字符类。
答案 3 :(得分:0)
您可以使用:
$str = preg_replace('[[:digit:]]+ Bytes ', "", $str);
https://regex101.com/r/fE7nO5/1
然后str_replace
替换[]
个字符。
$str = str_replace('[', ' ', $str);
$str = str_replace(']', ' ', $str);
$str = trim($str);
修改强> 您也可以使用一个正则表达式执行此操作:
$str = preg_replace('[[:digit:]]+ Bytes |\[|\]', "", $str);