PHP - 如果字符串与动态数字匹配,则为if语句

时间:2018-04-26 10:53:39

标签: php

我有一个看起来像这样的PHP字符串

$string = 'This is day 7 of the task';

该数字会根据当周发生的事情而变化,因此我尝试使用if语句来检查已设置的数字

if ($string == 'This is day 7 of the task') {
    echo 'Task day is set to a number';
}

我现在想要匹配它,无论数字是什么,我最好的方法是什么,正则表达式?

这样的事可能吗?

$string = 'This is day 7 of the task';
$isAMatch = preg_match("/This is day \(\d)+\ of the task\/", $string);

5 个答案:

答案 0 :(得分:2)

你确实可以这样做:

if (preg_match("/^This is day [0-9]+ of the task$/", $string)) {
    echo 'Task day is set to a number';
}

^表示"以"开头并且$表示"以"结尾。如果您的字符串在开头或结尾可以包含其他字符,请将其删除。

答案 1 :(得分:1)

您的实际正则表达式不起作用,因为您正在转义括号\(和最后一个分隔符\/。如果您不必获取该号码,可以使用:

$string = 'This is day 7 of the task';
$isAMatch = preg_match('~This is day \d+ of the task~', $string);

如果您想获得该号码,可以添加一个捕获组:

$string = 'This is day 7 of the task';
$isAMatch = preg_match('~This is day (\d*) of the task~', $string, $matches);
if ($isAMatch) {
    echo $matches[1]; // 7
}

答案 2 :(得分:1)

正如你所说的那样,可以使用正则表达式:

<?php
$string = 'This is day 7 of the task';
preg_match('~[0-9]~', $string, $matches);
var_dump($matches);

输出:

array(1) {
[0]=>
    string(1) "7"
}

现在您可以跟进

if(count($matches) > 0) {
    echo $matches[0]; // 7
}

https://3v4l.org/aiVlV

答案 3 :(得分:0)

在我看来,没有必要使用正则表达式 你可以str_replace字符串中的单词,你剩下的是数字。

这可以在以后用于比较每天会发生的事情。

$string = 'This is day 7 of the task';
$arr = ["This", "is", "day", "of", "the", "task", " "];

$DayInString = str_replace($arr, "", $string);

echo $DayInString;

https://3v4l.org/LuGGv

如果$DayInString只是一个数字,则匹配,数字是一周或一个月的日期或其他。

答案 4 :(得分:0)

我喜欢正则表达式,但是只有在没有其他直接技术来执行所需任务时才应使用它们。您可以使用filter_var($string, FILTER_SANITIZE_NUMBER_INT)检查并提取期望的整数值,条件是也将整数存储到$int的一行中。

代码:(Demo

$string = 'This is day 7 of the task';
if ($int = filter_var($string, FILTER_SANITIZE_NUMBER_INT)) {
    echo "Found \"$int\" inside of $string";
} else {
    echo "No integers found inside of $string";
}

echo "\n---\n";

$string = 'This is a day of the week';
if ($int = filter_var($string, FILTER_SANITIZE_NUMBER_INT)) {
    echo "Found \"$int\" inside of \"$string\"";
} else {
    echo "No integers found inside of \"$string\"";
}

输出:

Found "7" inside of This is day 7 of the task
---
No integers found inside of "This is a day of the week"