PHP:检查我的字符串是否只包含数字和“X”字符

时间:2017-01-17 14:28:57

标签: php laravel laravel-5 laravel-5.2 laravel-5.3

我检索我的尺寸产品的nexts值:30X50或20x20

如果此值包含字符x或X且仅包含数字,我想添加“cm”度量。

@if($myvalue contains only the character x and numbers)
 {{ $myvalue }} cm // like 20x20cm
@endif

我需要一个正则表达式。我试着用这个:

@if (preg_match('/^\d*(x|X){1}\d*$/',$item->name)) cm.@endif

但不起作用

1 个答案:

答案 0 :(得分:0)

不要在如此微不足道的情况下使用正则表达式。例如,您可以编写自己的域解析函数。

/**
 * Parse dimension
 *
 * @return array [dimX, dimY] or empty array when invalid input
 */
function parse(string $meta): array {

    $parseTree = explode('x', strtolower($meta));

    if (2 != \count($parseTree)
            || !ctype_digit($parseTree[0])
                || !ctype_digit($parseTree[1])) {
        return [];
    }

    return $parseTree;

}


/**
 * Test {@see parse}
 * @throws \LogicException When test failed
 */
function testParse() {

    $dataProvider = [
        ['20x50', [20, 50]],
        ['20X50', [20, 50]],
        ['20z50', []],
        ['a20x50', []],
        ['20xa50', []],
    ];


    foreach($dataProvider as $serie) {
        if (parse($serie[0]) != $serie[1]) {
            throw new \LogicException('Test failed');
        }
    }

}


testParse();