【问题标题】:Php Replace in string Preg_matchphp 替换字符串 Preg_match
【发布时间】:2020-05-15 18:34:26
【问题描述】:

如果帖子内容包含 gx-block 类,我想签入 wp。
例如我可以有

class="something_can_exists_or_not gx-block something_else" should print *true*

class="gx-block" *true*
Etc.

我试过了,但是不行

preg_match('/class="?.*gx-block?.*"/i', $content);

谢谢

【问题讨论】:

标签: php regex wordpress preg-match


【解决方案1】:

我不认为正则表达式是适合这项工作的工具。由于 HTML 不是常规语言。

无论如何你都可以这样想:

https://3v4l.org/ORKkR

const REGEX = '/class=("gx-block"|"gx-block .*"|".* gx-block")/i';


const HTML1 = '<div class="gx-block">abc</div>';
const HTML2 = '<div class="xyz">abc (gx-block) def</div>';
const HTML3 = '<div class="gx-blockhhh">abc</div>';


echo preg_match(REGEX, HTML1) ? 'true' : 'false';
echo PHP_EOL;
echo preg_match(REGEX, HTML2) ? 'true' : 'false';
echo PHP_EOL;
echo preg_match(REGEX, HTML3) ? 'true' : 'false';
echo PHP_EOL;

我建议通过 DOM 访问来代替,如下所述: Getting DOM elements by classname

【讨论】:

  • 比以前的答案好一点,但对于&lt;div class="xyz"&gt;abc "gx-block" def&lt;/div&gt; 来说是正确的。
  • @Toto 是的。我认为您不能编写这样的正则表达式来解决问题。 HTML 不是常规语言。解析 DOM 是可行的方法。
  • 几乎不可能,看看here
猜你喜欢
  • 2011-08-10
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多