我正在尝试使用<h2>
标题(通常是两个单词)并删除空格并将第二个单词包含在span标记中,以便我可以更改颜色。这可以通过PHP字符串函数的组合来完成吗?
$property_title = get_field('property_title');
$new_title = "PHP STRING FUNCTION"
echo $new_title;
所需输出的示例:
答案 0 :(得分:0)
explode()会帮助你。 所以这将把一个字切成一个数组,取最后一个元素并将其包装成一个跨度......
$words = "MORE THAN ONE WORD";
$wordsArray = explode(" ", $words);
$newWord = "";
foreach($wordsArray as $num => $word){
if ($num == sizeof($wordsArray) - 1){
$word = "<span>$word</span>";
}
$newWord .= $word;
}
echo $newWord;
答案 1 :(得分:0)
只需使用preg_match
和preg_match_all
,然后从匹配的元素重建标题。
$property_title = get_field('property_title');
// $property_title = '<h2>emerald bay</h2>';
// First find all of the words between <h1>, <h2>, <h3>, <h4>, <h5> or <h6> elements.
preg_match("/(<h[1-6][^>]*?>)([\\s\\S]*?)(<\/h[1-6]>)/i", $property_title, $initial_matches);
// Now match all of the words in the string.
preg_match_all("/([a-zA-Z]+)/i", $initial_matches[2], $matches);
// Set the point where a <span> should be set.
// $span_point = 1;
$span_point = count($matches[0]) - 1;
// Roll through the matched words & apply some logic to the span being set.$new_title = '';
$new_title = $initial_matches[1];
foreach ($matches[0] as $key => $value) {
$new_title .= $key == $span_point ? "<span>" . $value . "</span>" : $value;
}
$new_title .= $initial_matches[3];
// Echo the final title.
echo $new_title;
我很确定有一些方法可以将preg_match
和preg_match_all
的逻辑组合成一个正则表达式,但我不是百分之百确定如何做到这一点所以我将逻辑拆分为两个不同的块。另外,我将$span_point
设置为文本中的最后一个单词,但您可以手动覆盖它 - 就像我在评论中一样 - 强制包装一个特定元素。