剪切(裁剪)字符串中的一些文本

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];