【问题标题】:How to use a php variable inside preg_match? [duplicate]如何在 preg_match 中使用 php 变量? [复制]
【发布时间】:2017-10-03 11:26:57
【问题描述】:
$pId = "MP000000001648426";

下面的代码不起作用。有什么问题?

preg_match_all('/<span id="price_$pId".*?>(.*?)\<\/span>/', $product ,$matches);

但是,当我直接将字符串 (pId) 添加到 preg_match 时,它可以工作。

preg_match_all('/<span id="price_MP000000001648426".*?>(.*?)\<\/span>/', $product ,$matches);

但我想在预赛中提供一个变量。怎么办?

【问题讨论】:

  • 使用双引号。您不能在单引号字符串文字中插入变量。
  • @WiktorStribiżew 这解决了这个问题,把它作为答案
  • 这是一个骗人的问题,不需要发布答案。

标签: php preg-match


【解决方案1】:

改成

preg_match_all("/<span id=\"price_$pId\".*?>(.*?)\<\/span>/", $product, $matches);

(注意你需要真正的"以便转换PHP变量)

替代解决方案:

preg_match_all('/<span id="price_'. $pId . '".*?>(.*?)\<\/span>/', $product, $matches);

【讨论】:

  • 由于某种原因,替代解决方案对我不起作用!我不喜欢在 PHP 中对文本使用双引号,因此我更喜欢使用点符号将单引号文本与 vars 连接起来。但是上次我尝试这个时,preg_match 确实搜索了单引号字符作为模式的一部分!!!!这是我的代码...preg_match_all('/[^' . $tron-&gt;separator . ']+' . $tron-&gt;separator . '[^' . $tron-&gt;separator . ']+/u', $tron-&gt;getAkas(), $outer);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
相关资源
最近更新 更多