2010-12-22 11 views
0

sagen lässtHTML-Tags auf eine variable Zeichenfolge hinzufügen

$keyword = obama 
$result = "US President Barack Obama on Wednesday signed a landmark law" 

Wie kann ich sicherstellen, dass jedes Mal $ Schlüsselwort in $ zur Folge scheint es das $ Schlüsselwort ändert innerhalb <strong></strong> Tags zu sein?

str_replace funktioniert nicht, weil, wenn das Schlüsselwort in den unteren Kappen ist und das Ergebnis obama in higuer Kappen ist, es es nicht ersetzen würde.

Dank

edit: die Antwort gefunden, falls jemand muss es dies der Code ist

$myWords = array($keyword); 
function boldText($arrWords, $strSubject) 
{ 
    if (!is_array($arrWords)) return; 
    foreach ($arrWords as $strWord) 
    { 
      $strSubject = preg_replace('@(' . preg_quote($strWord, '@') . ')@i', "<b>\\1</b>", $strSubject); 
    } 
    return $strSubject; 
} 
+0

Vorsicht mit diesem Ansatz, wenn die Quelldaten wahrscheinlich jede HTML enthalten oder auch URLs etc. (zB. Was in dem Wort „obama“ geschieht, ist in einer URL) –

+0

Ich nehme die $ result von einer Zeichenkette, die nur eine kurze Beschreibung ist, die kein HTML enthält, ist auch keine URL. Die Sache ist, ich muss es fett stellen, auch wenn die Zeichenfolge Caps hat Buchstaben – Peibol

Antwort

0
<?php 
function boldText($string, $array) { 
    $string = strip_tags($string); 
    return preg_replace('~('.implode('|', $array).'[a-zA-Z]{0,45})(?![^<]*[>])~is', '<strong>$0</strong>', $string); 
} 
?> 

von http://php.bigresource.com/bold-string-from-array-of-keywords-HLRL2A8c.html

+0

das hat nicht funktioniert:/Es entfernt den gesamten Text und links nur $ string in Fettdruck. – Peibol

+0

funktioniert gut für mich. echo boldText ('US-Präsident Barack Obama am Mittwoch unterzeichnete ein bahnbrechendes Gesetz', Array ('Obama')); – troynt

+0

Ich habe es schließlich von der gleichen Website, die Sie mir gesagt, aber es gab einen anderen Code am Ende der Seite .. Also danke :) – Peibol

1
str_replace (ucfirst($keyword), "<strong>" . $keyword . "</strong">, $result); 

oder einen regulären Ausdruck mit Groß- und Kleinschreibung verwenden.

+0

str_replace funktioniert nicht, denn wenn das Schlüsselwort in unteren Caps ist und das Ergebnis Obama in higuer Caps ist, würde es nicht ersetzen. – Peibol

0

können Sie str_replace verwenden:

str_replace (mixed $keyword, mixed '<strong>' . $keyword . '</strong>', mixed $result) 

Dies wird die $ Schlüsselwort mit sich selbst ersetzen, von <strong> Tags umgeben.

+0

str_replace funktioniert nicht, weil, wenn das Keyword in unteren Kappen und das Ergebnis ist Obama in higuer caps, würde es nicht ersetzen. – Peibol

0

Ich bin sicher, dass es wahrscheinlich andere Methoden gibt, aber ich würde preg_replace() verwenden. Etwas wie:

$result = preg_replace($keyword , "<strong>$keyword</strong>" , $result); 
Verwandte Themen