admin管理员组文章数量:1331388
My basic titles are something like
Part One: Part Two
And I'm trying to end up with something like this using the colon as what I find in the regex:
<span class="one-class">Part One:</span><br><span class="two-class">Part Two</span>
This is the original in entry-header.php
and I want to continue to have that html:
if ( is_singular() ) {
the_title( '<h1 class="entry-title">', '</h1>' );
}
The following works as long as there is a colon in the title. If there is no colon, then none of the html gets added.
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 I think what I really want is the following, but it doesn't work. The output is as if my added code is not there.
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);
}
I think if I could get the above code working, it is preferable since if there was no colon at least the h1
tags would be added.
My basic titles are something like
Part One: Part Two
And I'm trying to end up with something like this using the colon as what I find in the regex:
<span class="one-class">Part One:</span><br><span class="two-class">Part Two</span>
This is the original in entry-header.php
and I want to continue to have that html:
if ( is_singular() ) {
the_title( '<h1 class="entry-title">', '</h1>' );
}
The following works as long as there is a colon in the title. If there is no colon, then none of the html gets added.
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 I think what I really want is the following, but it doesn't work. The output is as if my added code is not there.
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);
}
I think if I could get the above code working, it is preferable since if there was no colon at least the h1
tags would be added.
2 Answers
Reset to default 1It's nice to use regex, but you can also achieve the same thing here by just splitting the string on ':'
with 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;
You don't need a regex.
First, grab the title as a string variable:
$title = get_the_title();
Then, find the location of the first colon:
$colon = strpos( $title, ':' );
If there is no colon, handle that:
if ( $colon === FALSE ) {
// there was no colon, handle that!
echo '<h2>' . esc_html( $title ) . '</h2>';
} else {
// the rest of the code
}
What about the rest of the code that goes in the else
? Well, lets split it in two:
$first_part = substr( $title, 0, $colon );
$second_part = substr( $title, $colon + 1, strlen( $title ) );
Now we can output them differently:
echo '<span>' . $first_part . '</span>';
echo '<span>' . $second_part . '</span>';
本文标签: Adding span tags to post titles using regex
版权声明:本文标题:Adding span tags to post titles using regex 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742283655a2446549.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
the_title()
function to return its result instead of echoing it, you should use$string = the_title( '<h1 class="entry-title test">', '</h1>', false );
– Ivan Shatsky Commented Jul 7, 2020 at 15:04:
character and wrap the array items in span tags. A regular expression is just overcomplicating it ( and you shouldn't parse HTML with regex anyway ) – Tom J Nowell ♦ Commented Jul 7, 2020 at 15:30