Bir dize ve bazı unbold sözcükleri kaldırmak PHP Bold bazı kelimeler

2 Cevap php

I am creating an Image Search Engine. Currently, my script does bold the matching words on the keyword. But, some keywords are too long just like the followings.


Ben ararken shah rukh khan, aşağıdaki anahtar sözcüğü ile bir görüntü var.

25216d1235653089 shahrukh khan s wallpaper shah rukh actor

Gördüğünüz gibi, yukarıdaki anahtar kelime çok uzun. Yani, aşağıdaki gibi olması gerekir.

shahrukh khan s duvar kağıdı

| Veya |

shah rukh actor


Şu anda, aşağıdaki kodu kullanıyorum ama cesur etiketleri önce ve sonra bir boşluk gerektirir. 1 kelime kalın Yani, eğer, bu tüm anahtar kelime görüntüler.

if(strlen($img_keyword)>30){
    $img_keyword = preg_replace('/(.*?) <b>(.*?)<\/b> (.*?)/us'," <b>$2</b> ",$img_keyword);
}

/ Bunu düzeltmek yapmak için bir yolu var mı?

, Pnm123 Teşekkürler

2 Cevap

Eh, bildiğim kadarıyla gördüğünüz gibi, öndeki ve kalın metinden sonra boşluk gerekmez, neden sadece sonunda, boşluğu kaldırmak başında bir başlangıç ​​çapa eklemek ve bir bitiş çapa yok desen? Bu gibi:

$img_keyword = preg_replace('/^(.*?)<b>(.*?)<\/b>(.*?)$/us'," <b>$2</b> ",$img_keyword);

Ben aşağıda belirtildiği gibi Franz 'nın yardımıyla sonra, benim kod düzenlenebilir.

 $img_keyword = boldText($query, $img_keyword);
 if(strlen($img_keyword)>30){
 $img_keyword = preg_replace('/^(.*?)<b>(.*?)<\/b>(.*?)/u',"<b> $2 </b>",$img_keyword);
     }
if(strlen($img_keyword)>30){
$img_keyword = preg_replace('/<\/b>(.*?)<b>/x'," ",$img_keyword);
   }
if(strlen($img_keyword)>30){
$img_keyword = preg_replace('/<\/b>(.*?)$|(.*?)<b>$/x',"</b> ",$img_keyword);
 }

Anahtar kelimeler ise

kajol Shahrukh rağbet india blumarine

sonucudur

Shahrukh


Anahtar kelime ise

p 18 mFEk4J448M labelsadt 0% 2Clanguage tr% 2Cposttag Feroz Khan% 2Cposttag khan 2Cposttag fazla% 2Cposttag bollywood stil ikonu 27 Nisan% öldü

sonucudur

khan khan


Bir veya iki unbold kelimeleri tutmak ve diğerlerini kaldırmak için bir yolu var mı?