我有一个带3个块参数(单词,数字,斜线)的字符串,我需要将其分开并仅打印最后一个块参数。我这样做:
<?php
$howmuch="17шт / 119ml / 255грн";
echo preg_replace("/(\\d\\w\\ / )(\\d\\w\\ / )(\\d\\w\\ / )$/i", "$3", $howmuch);
?>
我只需要打印255грн,但是我的脚本什么也不做。请帮助我解决问题。谢谢大家。
答案 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];