1

嗨,我怎样才能使 preg_match_all 可编辑

preg_match_all('{(".$limit.")}i',$content,$matches);

<input type="text" size="30" name="limit" id="limit" value="" />

所以如果我想搜索一个不同的字符串,我只需要在输入表单中输入?

4

2 回答 2

1
  1. 您对表达式字符串使用了错误的引号
  2. 您以错误的方式使用表达式分隔符,它必须是一个字符(而不是'{' 和 '}')。
  3. 您应该使用preg_quote()作为输入转义正则表达式语法使用的特殊字符。
  4. 如果您还没有完成,请$limit从超全局数组中检索。$_GET
if (isset($_GET['limit'])) {
  $limit = preg_quote($_GET['limit'], '%');
  preg_match_all('%('.$limit.')%i',$content,$matches);
}

您还需要一个表单来提交值 - 正如 HamZa 在评论中所说:

<form action="this-script.php" method="get">
  <input type="text" size="30" name="limit" id="limit" value="" />
</form>
于 2013-04-13T18:49:47.660 回答
0

如果你经常在你的模式中使用用户输入,你可以看看T-Regx 工具,它有一个模式构建器!并且还有自动分隔符

$pattern = Pattern::inject('%(@limit)%', [
    'limit' => $_GET['limit']
]);

$pattern->match($string)->forEach(function (Match $m) {
    // do something with $m
});

Pattern::inject()(或Pattern::prepare())将引用任何用户输入。

于 2019-01-24T16:08:43.163 回答