字符串Preg_匹配中的Php替换

字符串Preg_匹配中的Php替换,php,regex,wordpress,preg-match,Php,Regex,Wordpress,Preg Match,我想在wp中检查帖子内容是否包含gx block类。 例如,我可以 class="something_can_exists_or_not gx-block something_else" should print *true* class="gx-block" *true* Etc. 我已经试过了,但不起作用 preg_match('/class=“?*gx块?*”/i',$content) 谢谢我认为正则表达式不适合这项工作。因为HTML不是常规语言 无论如何,你可以这样想: const

我想在wp中检查帖子内容是否包含gx block类。
例如,我可以

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

class="gx-block" *true*
Etc.
我已经试过了,但不起作用

preg_match('/class=“?*gx块?*”/i',$content)


谢谢

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

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

const REGEX='/class=(“gx块”|“gx块”。“|“*gx块”)/i';
常量HTML1='abc';
常量HTML2='abc(gx块)定义';
常量HTML3='abc';
回声预匹配(正则表达式,HTML1)?'真’:‘假’;
echo PHP_EOL;
回声预匹配(正则表达式,HTML2)?'真’:‘假’;
echo PHP_EOL;
回声预匹配(正则表达式,HTML3)?'真’:‘假’;
echo PHP_EOL;
我建议使用DOM访问来完成此操作,如下所述:

这里有您的问题的答案:您也可以使用
strpos($content,'gx block')
来解决这个问题。既然您正在解析HTML,那您就最好了。Patryk Parcheta谢谢。我发现有一个解决方案比前面的答案好一点,但是对于
abc“gx block”def
@Toto Yes,它是真的。我认为你们不能编写这样的正则表达式来解决这个问题。HTML不是常规语言。解析DOM是一个很好的方法。这几乎是不可能的,只要看看
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;