koymak

2 Cevap php

yeni im gebelik ve ben bir dizi var bazı dizeleri bulmak ve her biri vurgulamak istiyor.

örn.

  array[0] = "windows";
  array[0] = "windows xp";

  text will be: <em>windows</em> is bla bla...<em>windows xp</em> is bla bla

ben bunu nasıl yapabilirim?

2 Cevap

Çok basit değiştirme, preg_ gerek *:

$mytest = "Windows XP was all right, but I like Windows 7 better!°";
$replacement = "Windows XP";
echo str_replace($replacement, "<em>".$replacement."</em>", $mytest);

Ayrıca diziler değiştirebilirsiniz. [Manuel giriş] [1]

Eğer arama yapıyor ve metin üzerinde değiştirin ediyorsanız, bu kolaydır:

$text = 'windows xp';
$input = '....';
$output = str_replace($text, '<em>' . $text . '</em>', $input);

Bir dize olarak depolanan HTML bloğunu varsa düşünülmesi gereken bir konu var: ne metin eğer için kullanıcı arar bir etiket parçası olan veya adını veya nitelik değerine? Eğer "güçlü" vurgulamak istiyorsanız bu değiştirmek istemiyorum:

<strong>some text</strong>

ile:

<<em>strong</em>>some text</<em>strong</em>>

biçimlendirme artık geçerli olacak gibi.

Bu basit arama kullanarak ve değiştirin ya da biçimlendirme üzerinde düzenli ifadeler ile sorundur. Bu işleme en iyi yolu, bir DOM ağaca biçimlendirme ve sonra metin düğümlerinde değiştirmeleri yaparak yürümeye dönüştürmektir. Hatta bu sorunları var. Eğer "windows xp" vurgulamak istiyorsanız bu davayı vurgulamak istiyorum:

windows <i>xp</i>

Bu kullanıcı vurgulamak istiyorum varsaymak makul yani "windows xp" olarak görünür euse inci.