dışında howto kodlamak metinler 

2 Cevap php

Benim web sitesi için kendi BBCode ayrıştırıcı yapmak için çalışıyorum ve ben bir yol arıyorum için "htmlentities ()" PRE etiketleri içindeki kodları ve PRE etiketi kendisi dışında.

Örneğin:

<b>Hello world</b> (outputs &lt;b&gt;Hello world&lt;&gt;)
<pre>"This must not be converted to HTML entities"</pre> (outputs <pre>"This must not be converted to HTML entities"</pre>)

Ben gerçekten bunu nasıl hiçbir fikrim var.

Her türlü yardım mutluluk duyacağız :)

Teşekkürler.

2 Cevap

Sen dönüştürebilirsiniz &lt;pre&gt; … &lt;/pre&gt; geri <pre> … </pre>:

// convert anything
$str = htmlspecialchars($str);
// convert <pre> back
$str = preg_replace('/&lt;pre&gt;((?:[^&]+|&(?!lt;\\/pre&gt;))*)&lt;\\/pre&gt;/s', '<pre>$1</pre>', $str);

Tamam, uygulama varsa. Ama sadece özelliği elde etmek ise, o zaman tekerleği yeniden icat yok. Ayrıştırma kolay bir iş değildir, ve olgun ayrıştırıcıların bol dışarı orada. Tabii ki, ben ilk PEAR paketleri bakmak istiyorum. Try HTML_BBCodeParser.

Eğer gerçekten kendiniz yapmak istiyorsanız, iki yol var:

  • sıradanifade
  • durum makinaları

Genellikle hem bir karışımı kullanışlı. Etiketleri iç içe ve kötü oluşturulabilir çünkü Ama, gerçekten kod zor bir şey. En azından, genel bir ayrıştırıcı kodu kullanabilirsiniz ve sıfırdan bu web sitesi kodlamak için kullandığınız tüm zaman alacak, size sözcüksel alanlar tanımlayabilirsiniz.

Btw: Bir BBparser kullanarak kullanıcı girişi sterilize sizi özgür değil ...

EDIT: Ben iyi bir ruh halinde bugün buradayım, işte HTML_BBCodeParser kullanmak için nasıl bir parçası olduğunu:

// if you don't know how to use pear, you'd better learn that quick
// set the path so pear is in it
ini_set("include_path", ini_get("include_path").":/usr/share/pear");
// include PEAR and the parser
require_once("PEAR.php");
require_once("HTML/BBCodeParser.php");

// you can tweak settings from a ini fil
$config = parse_ini_file("BBCodeParser.ini", true);
$options = &PEAR::getStaticProperty("HTML_BBCodeParser", "_options");
$options = $config["HTML_BBCodeParser"];

// here start the parsing
$parser = new HTML_BBCodeParser();
$parser->setText($the_mighty_BBCode);
$parser->parse();
$parsed = $parser->getParsed();

// don't forget to clean that
echo htmlspecialchars(striptags($parsed));