PHP变量的正则,用preg_match()连接正则表达式字符串中的变量 - php

我正在使用preg_match()函数来确定是否执行一个函数。

if( preg_match( '/^([0-9]+,){0,3}[0-9]+$/', $string ) ) { ... }

但是我必须使用整数变量并将其集成到正则表达式中:

$integer = 4;

if( preg_match( '/^([0-9]+,){0,' . $integer . '}[0-9]+$/', $string ) ) { ... }

但在应有的时间不匹配。无法在正则表达式字符串中连接变量怎么办?

编辑:

strval($integer)解决了我的问题。在连接它之前,我不得不将整数值转换为字符串(尽管我不明白为什么):

$integer = 4;

if( preg_match( '/^([0-9]+,){0,' . strval($integer) . '}[0-9]+$/', $string ) ) { ... }

参考方案

每当将变量连接到正则表达式模式时,都应通过将变量传递给the preg_quote function来实现。

但是,如果变量var是(如您的示例4一样),则不会有任何区别。您使用的模式将是:

/^([0-9]+,){0,4}[0-9]+$/

在这种情况下,如果它不起作用:请检查$string值,并确保模式匹配。顺便说一句,/^(\d+,){,4}\d+$/较短,并且执行相同的操作。

调用strval并不能解决任何问题,AFAIK ...我已经使用以下代码段测试了没有strval的代码:

$string = '1234,32';

if (preg_match( '/^([0-9]+,){0,4}[0-9]+$/', $string) )

{

echo 'matches',PHP_EOL;

$count = 4;

if (preg_match( '/^([0-9]+,){0,'.$count.'}[0-9]+$/', $string ) )

echo 'matches, too',PHP_EOL;

}

如我所料,输出为:

matches

matches, too

就您而言,我只需写:

$count = 4;

preg_match('/^(\d+,){,'.preg_quote($count, '/').'}\d+$/', $string);

无疑,这比仅调用strval更安全,因为您没有考虑可能的特殊正则表达式字符(+[]{}/\$^?!:<=*.等)

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…用户名regex字母数字,仅带下划线 - php

我正在尝试为php的preg_match找到一个正则表达式,该表达式允许带下划线的字母数字字符,但下划线必须位于字符之间(而不是字符串的开头或结尾),并且彼此之间永远不能有2个下划线。例子:无效:_name na_me_ na__me 有效:na_me na_m_e 我发现其中的大部分适用于此功能,但不能避免出现重复的下划线:/^[A-Za-z][A-Za-…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 PHP正则表达式函数 preg_match() 可以匹配字符串。以下是一个示例: ```php $str = "Hello, World!"; $pattern = "/\bWorld\b/"; if (preg_match($pattern, $str)) { echo "Match found!"; } else { echo "Match not found."; } ``` 这段代码将输出 "Match found!",因为 $str 包含单词 "World",并且 $pattern 使用了单词边界 \b 进行匹配。请注意,正则表达式模式需要用斜杠 / 包围。 ### 回答2: PHP正则表达式是一种强大的字符串匹配工具,能够根据特定模式来匹配和处理字符串。在PHP,可以使用preg_match函数来进行正则表达式的匹配。 preg_match函数接受三个参数,分别是正则表达式模式、目标字符串和可选的匹配结果输出变量。函数会在目标字符串查找是否存在与正则表达式模式匹配的内容,如果匹配成功,则返回true,否则返回false。 正则表达式模式由特定的字符和符号组成,用于描述需要匹配的字符串规则。例如,使用\d可以匹配一个数字字符,\w可以匹配一个字母数字字符。 对于复杂的正则表达式模式,我们可以使用特定的字符类、量词和分组等特性来实现更准确的匹配。例如,使用[a-z]可以匹配一个小写字母,\d{2,4}可以匹配2到4个数字。 在进行匹配时,可以使用捕获组来提取感兴趣的部分字符串。捕获组是通过在正则表达式模式使用小括号来定义的,使用圆括号包裹的部分将被定义为一个捕获组。 除了preg_match函数,PHP还提供了许多其他与正则表达式相关的函数,如preg_replace、preg_split等,用于替换、拆分和其他正则表达式操作。 总结来说,PHP正则表达式是一种强大的字符串匹配工具,可以根据特定的模式来匹配和处理字符串。在应用,我们可以利用它来实现各种字符串操作,如验证、替换、拆分等。 ### 回答3: 在PHP正则表达式是一种强大的工具,用于匹配和处理字符串。它可以用于各种字符串操作,例如验证输入,提取数据以及替换特定的字符串。 使用正则表达式的基本步骤是: 1. 定义正则表达式模式,它由特定的字符和元字符组成,用于匹配目标字符串。 2. 使用preg_match函数进行匹配,该函数用于判断目标字符串是否与正则表达式模式匹配。如果匹配成功,则返回1;否则返回0。 3. 可以使用 preg_match_all函数来匹配目标字符串的所有模式出现。 4. 使用preg_replace函数实现字符串的替换操作,将匹配到的部分替换为指定的字符串。 5. 使用preg_split函数按照正则表达式模式分割字符串。 例如,如果我们想匹配一个字符串是否包含数字,可以使用正则表达式模式"/\d/",其\d表示数字。代码如下: ```php $str = "Hello,123 world"; if(preg_match("/\d/", $str)){ echo "字符串包含了数字"; } else { echo "字符串不包含数字"; } ``` 输出结果为:字符串包含了数字。 以上是关于PHP正则表达式匹配字符串的基本操作,根据具体的需求和匹配规则,可以使用更复杂的模式和函数来实现更精确的匹配和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值