我想在标题标签中清理双类attributs,如果找不到则添加一个...
示例:
<h1 class="test" class="test"> --> <h1 class="correct test">
<h1 class="test"> --> <h1 class="correct test">
<h1> --> <h1 class="correct">
<h2> --> <h2 class="correct">
我用正则表达式尝试了很多东西,但我还远没有一个有效的解决方案......
$content = preg_replace_callback( '#\<h[1-6]{.}*(class=")\>#i', function( $matches ) {
var_dump($matches);
}, $content );
我只是通过移动a)来纠正重复!!
$content = preg_replace_callback( '#(\<h[1-'.$this->options['hx_max_level'].'])(.*?)\>(.*)(<\/h[1-'.$this->options['hx_max_level'].']>)#i', function( $matches ) {
var_dump($matches);
if ( ! stripos( $matches[0], 'id=' ) ) :
$matches[0] = $matches[1] . $matches[2] . ' style="" id="' . sanitize_title( $matches[3] ) . '">' . $matches[3] . $matches[4];
endif;
return $matches[0];
}, $content );
现在我只需要修改我的正则表达式来添加一个类...... 感谢
答案 0 :(得分:0)
您可以使用Regex解决问题:
$reg = '/(<\w*[^>]*class=[^>]*)class="[^">]*"([^>]*>)/';
$text = '<h1 class="test" foo="bar" class="test" baz="bag"> --> <h1 class="correct test">
<h1 class="test"> --> <h1 class="correct test">
<h1> --> <h1 class="correct">
<h2> --> <h2 class="correct">';
$res = preg_replace_callback($reg, function ($matches) {
if (count($matches) > 1) {
return $matches[1].$matches[2];
}
}, $text);
你需要 $res
!
如果没有任何课程,那就添加一个...... [我正在编写代码]
答案 1 :(得分:-1)
我终于回答了我自己的问题:
$content = preg_replace_callback( '#(\<h[1-'.$this->options['hx_max_level'].'])(.*?)\>(.*)(<\/h[1-'.$this->options['hx_max_level'].']>)#i', function( $matches ) {
if ( ! stripos( $matches[0], 'id=' ) ) :
if(!preg_match('#(class=.)#i',$matches[2])){
$matches[2] = $matches[2].' class="ahxm_title"';
} else {
$matches[2] = preg_replace('#(class=.)#i','$1ahxm_title ',$matches[2]);
}
$matches[0] = $matches[1] . $matches[2] . ' id="' . sanitize_title( $matches[3] ) . '">' . $matches[3] . $matches[4];
endif;
return $matches[0];
}, $content );
我已经更正了)这是重复的原因...... 我还为班级做了另一项治疗。 感谢您的帮助,如果我的问题不是很清楚(我的英语非常流利),感谢对不起 再见