php删除字符前的所有内容

时间:2015-08-31 19:57:20

标签: php mysql

我有以下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

如何使用上述代码实现此目的?

提前感谢。

4 个答案:

答案 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);

https://regex101.com/r/fE7nO5/2