【问题标题】:Get number before selected word form string using preg_match function in php使用php中的preg_match函数获取所选单词形式字符串之前的数字
【发布时间】:2017-04-20 10:09:56
【问题描述】:

我正在尝试使用preg_match 从以下字符串中获取毫米和英寸值。

$string = "Gold 5.0mm Rolo Chain 18" In";

我该怎么做?

【问题讨论】:

  • 你试过了吗?什么不起作用?
  • 简单的@Toto 想要字符串中的 'mm' 和 'In' 值。表示要使用 preg_match 在 'mm' 和 'In' 的单词之前获取数字。
  • 感谢大家的编辑更正。
  • $string = "Gold 5.0mm Rolo Chain 18" In";$string = "Gold 5.0mm Rolo Chain 18 In";
  • 两种情况下都可能。

标签: php regex string preg-match preg-match-all


【解决方案1】:

正则表达式: ([\d\.]+)(?:mm|\")

([\d\.]+)(?:mm|\") 这将匹配 mm" 之前的数字 .

PHP code demo

<?php

ini_set('display_errors', 1);
$string='Gold 5.0mm Rolo Chain 18" In';
preg_match_all("/([\d\.]+)(?:mm|\")/", $string,$matches);
print_r($matches);// its 1 index will return your desired result

或者:

正则表达式: /[\d\.]+(?=mm|\")/

[\d\.]+(?=mm|\") 匹配数字,. 并积极期待 mm"

PHP code demo

<?php
ini_set('display_errors', 1);
$string='Gold 5.0mm Rolo Chain 18" In';
preg_match_all("/[\d\.]+(?=mm|\")/", $string,$matches);
print_r($matches);

【讨论】:

  • @RP 您可以使用第二种解决方案并使用$matches[0]
  • 再次感谢@sahil 的帮助,如果我有类似“Gold 5.0mm Rolo Chain 18 In”之类的字符串,如何从字符串中获取“In”编号?
  • @RP 试试这个/[\d\.]+(?=mm|\"|\s* In)/i 看看这个eval.in/779544
  • 嗨@SahilGulati,如果想在'In'或'"'工作之前使用preg_match从'Gold 5mm Bracelet 7 1/2" In'之类的字符串中获得'7 1/2'。你能帮帮我吗?
【解决方案2】:

想从字符串中获取mm 号码和In 号码。

我猜你可以使用:

preg_match_all('/[\d.]+/si', $s, $m);
print_r($m[0]);

输出:

Array
(
    [0] => 5.0
    [1] => 18
)

【讨论】:

  • 感谢@Pedro 的回复。
【解决方案3】:
$string = 'Gold 5.0mm Rolo Chain 18" In"';

preg_match('/([\d\.]+)[m]{2}[A-z\ ]+([\d]+)[A-z\"\ ]+/',$string,$matches);

/**
* $match[1] - 5.0
* $match[2] - 18
*/

【讨论】:

  • 仅供参考 [A-z] 匹配 [、反斜杠、]^_ 和反引号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多