PHP 特定字符前的粗体字符串
PHP Bold String Before Specific Char
我有符合此标准的产品标题:“品牌名称 - 商品标题”,我需要像这样转换此字符串:
品牌名称
项目标题
所以我需要处理两件事:用“br”替换字符串中的第一个破折号,并在第一个破折号之前的文本上加粗。
使用此代码我只达到了目标的第一部分:
<a class="product-item-link primabold-category" href="<?php echo $_product-> getProductUrl() ?>">
<?php echo str_replace(' - ', '<br />', $_helper->productAttribute($_product, $_product->getName() , 'name')); ?></a>
和这个 CSS:
.primabold-category::first-line { font-weight: 900; font-size: 14px; letter-spacing: 0px;}
但结果并不像预期的那样,因为它只在第一行“加粗”,即使破折号之前的文本分两行..
这里是一个真实的标题示例:
POLO RALPH LAUREN - Camicia donna in Oxford azzurro
预期结果:
POLO RALPH LAUREN
Camicia donna in Oxford azzurro
正如您在 picture 中看到的那样,当我在移动视图中时,“lauren”在第二行并且不是粗体:(
--> 我找到了符合预期结果的javascript:
<a class="ProductList-title primabold-category" style="font-weight: 100;">Polo ralph lauren - T-shirt oudspeaker</a> <script> function changeBrandName() { var prodList = document.querySelectorAll("a.primabold-category"); for (var i = 0; i < prodList.length; i++) { var text = prodList[i].innerText; var index = text.indexOf('-'); var lower = text.substring(0, index); var higher = text.substring(index + 1); prodList[i].innerHTML = lower.bold() + '<br />' + higher; } } changeBrandName(); </script>
但是 javascript 不会在分层导航加载新产品线时触发,所以我认为使用 PHP 将是完美的解决方案,如果可能的话。
改用此代码:
$brand= $_helper->productAttribute($_product, $_product->getName() , 'name');
$explodedBrand=explode(' - ',$brand,2);
if(count($explodedBrand) > 1){
$brand = '<span class="bold">'.$explodedBrand[0].'</span>'.'<br>'.$explodedBrand[1];
}
echo $brand;
记得在 CSS 文件中定义 bold
class。
我有符合此标准的产品标题:“品牌名称 - 商品标题”,我需要像这样转换此字符串:
品牌名称
项目标题
所以我需要处理两件事:用“br”替换字符串中的第一个破折号,并在第一个破折号之前的文本上加粗。
使用此代码我只达到了目标的第一部分:
<a class="product-item-link primabold-category" href="<?php echo $_product-> getProductUrl() ?>">
<?php echo str_replace(' - ', '<br />', $_helper->productAttribute($_product, $_product->getName() , 'name')); ?></a>
和这个 CSS:
.primabold-category::first-line { font-weight: 900; font-size: 14px; letter-spacing: 0px;}
但结果并不像预期的那样,因为它只在第一行“加粗”,即使破折号之前的文本分两行..
这里是一个真实的标题示例:
POLO RALPH LAUREN - Camicia donna in Oxford azzurro
预期结果:
POLO RALPH LAUREN
Camicia donna in Oxford azzurro
正如您在 picture 中看到的那样,当我在移动视图中时,“lauren”在第二行并且不是粗体:(
--> 我找到了符合预期结果的javascript:
<a class="ProductList-title primabold-category" style="font-weight: 100;">Polo ralph lauren - T-shirt oudspeaker</a> <script> function changeBrandName() { var prodList = document.querySelectorAll("a.primabold-category"); for (var i = 0; i < prodList.length; i++) { var text = prodList[i].innerText; var index = text.indexOf('-'); var lower = text.substring(0, index); var higher = text.substring(index + 1); prodList[i].innerHTML = lower.bold() + '<br />' + higher; } } changeBrandName(); </script>
但是 javascript 不会在分层导航加载新产品线时触发,所以我认为使用 PHP 将是完美的解决方案,如果可能的话。
改用此代码:
$brand= $_helper->productAttribute($_product, $_product->getName() , 'name');
$explodedBrand=explode(' - ',$brand,2);
if(count($explodedBrand) > 1){
$brand = '<span class="bold">'.$explodedBrand[0].'</span>'.'<br>'.$explodedBrand[1];
}
echo $brand;
记得在 CSS 文件中定义 bold
class。