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

时间:2018-09-23 22:53:44

标签: php string preg-replace

我有一个带3个块参数(单词,数字,斜线)的字符串,我需要将其分开并仅打印最后一个块参数。我这样做:

<?php
$howmuch="17шт / 119ml / 255грн";
echo preg_replace("/(\\d\\w\\ / )(\\d\\w\\ / )(\\d\\w\\ / )$/i", "$3", $howmuch);
?>

我只需要打印255грн,但是我的脚本什么也不做。请帮助我解决问题。谢谢大家。

3 个答案:

答案 0 :(得分:2)

如果格式是固定的,则可以使用

来获取没有任何正则表达式的值。
explode(" / ", $howmuch)[2]

请参见PHP demo。它将使用space-/-space分割字符串,并为您提供结果数组的第三个元素。

或者,您也可以在грн之后使用preg_match操作将/提取为数字(此方法可让您查找匹配项,而不考虑有多少$howmuch="17шт / 119ml / 255грн"; if (preg_match("/\d+\s*грн/ui", $howmuch, $results)) { echo $results[0]; } 比赛之前或之后):

"/\d+(?:[.,]\d+)?\s*грн/ui"

请参见PHP demo

如果值可以包含小数部分,则可以使用(?:[.,]\d+)?,其中.匹配,"fmt.Println(*r["HostedZones"][0])" 的可选序列,后跟1+数字。 / p>

答案 1 :(得分:1)

为什么不保持它的简单易懂,例如:

{{1}}

这不需要太多解释,也不需要弄清楚为什么会这样做。

答案 2 :(得分:1)

所有正则表达式免费选项:

echo explode('/', $howMuch)[2];

如果需要确保字符串包含三个部分

if (substr_count($howmuch, '/') > 1) {
    echo explode('/', $howMuch)[2];
}

如果您使用的是5.4之前的php版本

$chunks = explode('/', $howMuch);
echo $chunks[2];