2016-04-01 27 views
-1

Web sitesi hazırlıyorum ve PHP'de özel bir Markup tipi dil yapmak istiyorum. Etiketlerin [ ve ] ile çevrilmesini istiyorum. Şimdi, herkes yazar gibi ben, bu düşünüyordum ve böyle bir şey yapabileceğini: bu işe yarayabilirPHP Özel İşaretleme Dili Ayrıştırıcı

function formatMarkup($markup = ''){ 
    $markup = str_replace('[color=blue]', '<span style="color: blue">', $markup); 
    return $markup 
} 

olsa o explode() böyle bir şey yapsın, eğer daha progrematically doğru olurdu, ama başlayan Her [ ve her ] ile biten. Eğer öğrenirsem bu harika olurdu. Zaman ve çaba için teşekkür ederim.

DÜZENLEME: Ben preg_split() kullanmaya karar . Güzel görünüyor ve hepsi var ama normal ifadeyi alamıyorum. Here is my code.

DÜZENLEME # 2: yaptığım regex çoğunu var, ama dizideki uneeded ekstra tuşlar vardır. Onları nasıl tamir edebilirim? Here is my new code.

cevap

0

İşaretleme dilimi yaptım. Ben bireysel "etiketleri" almak için

$split = preg_split("/(\[|\])/", $markup); 

kullanılmış ve bunlardan her birinin içinden okuma yazma bilmeyen ve değer boş olup olmadığını kontrol etmek
foreach($split as $k => $v){ 
     if(strlen($v) < 1){ 
      continue; 
     } 

kullandı. Ardından, tüm çeklerimi yapardım ve kod bloklarını birlikte ayrıştırırdım ve çizgi oluşturulduktan sonra yeniden oluşturulmuş metin yapardım.