剪切(裁剪)字符串中的一些文本
Cut (crop) some text in a string
我有一个包含 3 个块参数(单词、数字、斜杠)的字符串,我需要将它分开并仅打印最后一个块参数。我这样做:
<?php
$howmuch="17шт / 119ml / 255грн";
echo preg_replace("/(\d\w\ / )(\d\w\ / )(\d\w\ / )$/i", "", $howmuch);
?>
我只需要打印 255грн,但我的脚本什么都不做。请帮我解决一个问题。谢谢大家。
如果格式是固定的,您可以使用
在没有任何正则表达式的情况下获取值
explode(" / ", $howmuch)[2]
见PHP demo。它将用 space-/-space
分割字符串并得到结果数组的第三个元素。
或者,您可以使用 preg_match
操作 提取 一个带有 грн
的数字(这种方法可以让您找到匹配项,无论有多少/
匹配前后都有):
$howmuch="17шт / 119ml / 255грн";
if (preg_match("/\d+\s*грн/ui", $howmuch, $results)) {
echo $results[0];
}
参见PHP demo。
如果值可以包含小数部分,您可以使用 "/\d+(?:[.,]\d+)?\s*грн/ui"
,其中 (?:[.,]\d+)?
匹配 .
或 ,
后跟 1+ 位的可选序列.
为什么不保持简单易懂,例如,像这样:
$howMuch = '17шт / 119ml / 255грн';
$blocks = explode('/',$howMuch);
echo $blocks[2];
这不需要太多解释,也不需要弄清楚它为什么会这样做。
所有无正则表达式选项:
echo explode('/', $howMuch)[2];
如果您需要确保字符串包含三个部分
if (substr_count($howmuch, '/') > 1) {
echo explode('/', $howMuch)[2];
}
如果您使用的是 php 5.4 之前的版本
$chunks = explode('/', $howMuch);
echo $chunks[2];
我有一个包含 3 个块参数(单词、数字、斜杠)的字符串,我需要将它分开并仅打印最后一个块参数。我这样做:
<?php
$howmuch="17шт / 119ml / 255грн";
echo preg_replace("/(\d\w\ / )(\d\w\ / )(\d\w\ / )$/i", "", $howmuch);
?>
我只需要打印 255грн,但我的脚本什么都不做。请帮我解决一个问题。谢谢大家。
如果格式是固定的,您可以使用
在没有任何正则表达式的情况下获取值explode(" / ", $howmuch)[2]
见PHP demo。它将用 space-/-space
分割字符串并得到结果数组的第三个元素。
或者,您可以使用 preg_match
操作 提取 一个带有 грн
的数字(这种方法可以让您找到匹配项,无论有多少/
匹配前后都有):
$howmuch="17шт / 119ml / 255грн";
if (preg_match("/\d+\s*грн/ui", $howmuch, $results)) {
echo $results[0];
}
参见PHP demo。
如果值可以包含小数部分,您可以使用 "/\d+(?:[.,]\d+)?\s*грн/ui"
,其中 (?:[.,]\d+)?
匹配 .
或 ,
后跟 1+ 位的可选序列.
为什么不保持简单易懂,例如,像这样:
$howMuch = '17шт / 119ml / 255грн';
$blocks = explode('/',$howMuch);
echo $blocks[2];
这不需要太多解释,也不需要弄清楚它为什么会这样做。
所有无正则表达式选项:
echo explode('/', $howMuch)[2];
如果您需要确保字符串包含三个部分
if (substr_count($howmuch, '/') > 1) {
echo explode('/', $howMuch)[2];
}
如果您使用的是 php 5.4 之前的版本
$chunks = explode('/', $howMuch);
echo $chunks[2];