使用正则表达式向帖子标题添加SPAN标记

时间:2020-07-07 作者:HopefullCoder

我的基本头衔是

第一部分:第二部分

我试图用冒号作为我在正则表达式中找到的东西来结束类似的事情:

<span class="one-class">Part One:</span><br><span class="two-class">Part Two</span>
这是entry-header.php 我想继续使用html:

if ( is_singular() ) {
            the_title( \'<h1 class="entry-title">\', \'</h1>\' );
        }
    
只要标题中有冒号,以下内容就有效。如果没有冒号,则不会添加任何html。

if ( is_singular() ) {
                        $string = get_the_title();
            $pattern = \'~(.+): (.+)~i\';
            $replacement = \'<h1 class="entry-title"><span class="title-cite-pali">$1:</span><br><span class="title-english">$2</span></h1>\';
            echo preg_replace($pattern, $replacement, $string);
        }
    
但我想我真正想要的是but it doesn\'t work。输出就像我添加的代码不在那里一样。

if ( is_singular() ) {
            $string = the_title( \'<h1 class="entry-title test">\', \'</h1>\' );
            $pattern = \'~(.+): (.+)~i\';
            $replacement = \'<span class="title-cite-pali">$1:</span><br><span class="title-english">$2</span>\';
            echo preg_replace($pattern, $replacement, $string);
            
        }
    
我想如果我能让上面的代码正常工作,那就更好了,因为如果没有冒号,至少h1 将添加标签。

2 个回复
最合适的回答,由SO网友:mozboz 整理而成

使用regex很好,但您也可以通过在\':\' 具有explode e、 g.:

    $matches = explode(":", get_the_title()) ;

    if (count($matches) == 2) {
       $result = "foo bar $matches[0] foo bar $matches[1]";
    } else {
       // case with no : in title
       $result = "foo bar $matches[0] foo bar";
    }
    echo $result;

SO网友:Tom J Nowell

你不需要正则表达式。

首先,获取标题作为字符串变量:

$title = get_the_title();
然后,找到第一个冒号的位置:

$colon = strpos( $title, \':\' );
如果没有冒号,请处理:

if ( $colon === FALSE ) {
    // there was no colon, handle that!
    echo \'<h2>\' . esc_html( $title ) . \'</h2>\';
} else {
    // the rest of the code
}
那么else? 好吧,让我们把它一分为二:

$first_part = substr( $title, 0, $colon );
$second_part = substr( $title, $colon + 1, strlen( $title ) );
现在我们可以以不同的方式输出它们:

echo \'<span>\' . $first_part . \'</span>\';
echo \'<span>\' . $second_part . \'</span>\';

相关推荐

要删除文件扩展名的Regex

我正在使用重定向插件,我想用它将旧的静态html页面重定向到新的Wordpress页面。所以基本上任何看起来像http://www.example.com/page.html 成为http://www.example.com/page/唯一的问题是我想排除一个文件夹http://www.example.com/specialfolder/page.html 应保持不变。