从preg_match_all遍历比赛 - php

我试图弄清楚WordPress中此插件的机制。
我有一个preg_match_all函数,如下所示:

preg_match_all('/(?<=\\[\\[).+?(?=\\]\\])/', $content, $matches, PREG_PATTERN_ORDER);
$numMatches = count($matches[0]);

for ($i = 0; $i < $numMatches; $i++) {
  $postSlug = $matches[0][$i];
}

如果我正确理解,则count($matches[0])假定$content中只有一个匹配项。

我的目标是重新编写for语句,以允许preg_match_all脚本中的所有匹配项。

我假设我应该用foreach ($matches as $postSlug)代替for语句,甚至不要在最后用令人困惑的$matches[0][$i]打扰。

不幸的是,最终输出似乎并没有遍历数组中的每个元素。有任何想法吗?谢谢!

参考方案

如果我正确理解这一点,count($ matches [0]假定$ content中只有一个匹配项。

不完全的; $matches[0]表示整个正则表达式中的匹配项数组(而不是$matches[1],它是正则表达式的第一个匹配组中的匹配项数组)。因此,count($matches[0])是第一个比赛组中比赛的数量。

您可以按照您所说的做,并将for循环重写为foreach循环,但这可能不会改变任何内容,因为这两种方法都应遍历$matches[0]中的所有元素。您确定要查找的结果与正则表达式匹配吗?

将大字符串分成多个小字符串-PHP - php

我从数据库中获取了一个长字符串,我需要对其进行解析,以使其不包含一个大字符串,而是多个,其中每个字符串都有2个字符。让我们以示例为例:我连接到表,获取此字符串:B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5,之后,我必须对字符串进行解析,因此:B1 C1 F4 G6 H4 I7 J1 J8 L5 O6 P2 Q1 R6 T5 U8 V1…

PHP preg_match直到双行中断 - php

我在mysql字段中有此数据:First text text text text text text text text text text text text text text text text text text text text Second text text text text text text text text text text te…

正则表达式匹配用户名的复杂条件 - php

我需要检查字符串是否具有以下指定以外的内容它必须以字母开头(大写或小写)可以有字母字符可以有数字字符可以有破折号可以有减号-可以有下划线_可能会昏迷可以有点。长度从4到35个角色,不多不少其他所有不应该在此字符串中都有我坚持这一点:preg_match('/^[\w]{4,35}$/i', $username) 参考方案 preg_mat…

从PHP中的字符串中删除HTTP和HTTPS - php

我有几个网址,例如https://example.com/http://example.com/我只想要“ example.com”作为字符串我想删除 https://和http://所以我采取了这样的数组,$removeChar = ["https://", "http://", "/"]; 删除…

通过电话号码确定国家 - php

我在SO上看到了一些与我的要求类似的问题,但似乎没有什么合适的。我处于需要处理通话记录并使用电话号码确定国家/地区的位置。拨打的号码可以是任何国家,例如:44 7899455120-英国34 965791845-西班牙355 788415235-阿尔巴尼亚显然,如果所有调用代码都是两位数字,那么世界将会很好,但是事实并非如此。目前,我有一个充满国家和相关代码…