使用PHP替换前面有MB或GB的不同数字

使用PHP替换前面有MB或GB的不同数字,php,mysql,regex,Php,Mysql,Regex,我有一个显示字符串的站点,如 "Requires 10MB data", "Requires 700MB data", "Requires 1.2GB data" etc., 我正试图找到一种方法来加粗10MB或700MB或1.2GB部分 这将导致 "Requires <b>10MB</b> data", "Requires <b>700MB</b> data", "Requires <b>1.2GB</b> d

我有一个显示字符串的站点,如

"Requires 10MB data", 
"Requires 700MB data", 
"Requires 1.2GB data" etc., 
我正试图找到一种方法来加粗10MB700MB1.2GB部分

这将导致

"Requires <b>10MB</b> data", 
"Requires <b>700MB</b> data", 
"Requires <b>1.2GB</b> data" etc., 
“需要10MB的数据”,
“需要700MB数据”,
“需要1.2GB数据”等。,
我滥用谷歌已经有一段时间了,但不知道该搜索什么


任何帮助都将不胜感激

您可以使用此
preg_match
删除GB/MB之前的数字:

$replaced = preg_match('[0-9.]+[GM]B', $str, $m);
var_dump($m[0]);
说明:
也许我太简单了,但是

$str = str_replace('B data', 'B', str_replace('Requires ', $original_str);

或者,如果您不喜欢正则表达式,或者不认为有必要加载整个正则表达式库,请尝试以下简单方法:

$t = 'Requires 10MB data';

$t = str_replace( array('Requires ', ' data') , '', $t);

应该只保留字符串的10Mb或1.2GB部分。

如果要搜索并替换MB/GB部分,可以使用以下方法:

那么,你的方法是这样的

$string = 'Requires 340MB of space.';
$string = preg_replace('/([0-9.]+[KMGT]B)/', '<b>$1</b>', $string);
echo $string; // Outputs "Requires <b>340MB</b> of space."
$string='需要340MB的空间';
$string=preg_replace('/([0-9.]+[KMGT]B)/','$1',$string);
echo$string;//输出“需要340MB的空间。”

我假设这是在不改变显示字符串的情况下删除“Requires”和“data”部分,对吗?@ChrisForrence-我发帖的时候已经半睡着了,现在看完后我应该说我正在尝试在不删除任何其他内容的情况下将数字加粗。。像这样——“需要10MB数据”或“需要700MB数据”。。有什么想法吗?啊…我知道发生了什么。基本上,当使用Markdown时,HTML标记被隐藏(例如关键的
标记)。如果希望HTML标记出现在文本中,则需要在它们周围加上记号(选项卡上方的“1”键左侧的键)。不幸的是,这改变了人们对你问题的理解。但现在你知道了!查找str_replace,它允许传递数组而不是嵌套调用。
$string = preg_replace($pattern, $replacement, $subject);
$string = 'Requires 340MB of space.';
$string = preg_replace('/([0-9.]+[KMGT]B)/', '<b>$1</b>', $string);
echo $string; // Outputs "Requires <b>340MB</b> of space."