2013-10-08 8 views
5

मैं एक PHP फ़ंक्शन बनाना चाहता था जो डबल तारांकन के बीच पाठ को बोल्ड कर देगा, और एक तारांकन, (स्टैक ओवरफ्लो पर संपादक की तरह) के बीच इटैलिक बना देगा।तारों के बीच टेक्स्ट बनाएं

समान नियम लागू होते हैं, यदि * और शब्द के बीच कोई स्थान है, तो इसे प्रस्तुत नहीं करना चाहिए।

कौन मेरी मदद कर सकता है? मैंने कोशिश की, लेकिन मैं केवल इतना ही आया, क्योंकि मुझे नहीं पता कि अजीब तारों को कैसे बनाना है "< b>" और यहां तक ​​कि "</b>"।

(मैं उन्हें बिना किसी स्पेस टाइप नहीं कर सकते, stackoverflow के बीच पाठ प्रस्तुत करना होगा के रूप में बोल्ड .....)

$thenewtext = str_replace("**", "<b>", "**Hello World** of PHP"); 
+1

नियमित अभिव्यक्तियां wo इस सरल उदाहरण के लिए आरके। लेकिन कृपया एक पार्सर चुनने पर विचार करें। एचटीएमएल के साथ नियमित अभिव्यक्तियों का उपयोग करना [कुछ लोगों को पीने के लिए ड्राइव कर सकते हैं] (http://stackoverflow.com/a/1732454/13895)। – John

+0

@ जॉन: ओपी सादा पाठ * * एचटीएमएल में बदल रहा है, एचटीएमएल को पार्स नहीं कर रहा है, इसलिए नियमित अभिव्यक्ति सिर्फ ठीक होनी चाहिए। – FtDRbwLXw6

उत्तर

9

एक साधारण regex क्या करेंगे बोल्ड :

$thenewtext = preg_replace('#\*{2}(.*?)\*{2}#', '<b>$1</b>', '**Hello World** of PHP'); 
0

मैं नहीं कर रहा हूँ इसके साथ भी परिचित है, लेकिन आप करने जा रहे हैं एक नियमित अभिव्यक्ति की आवश्यकता है। preg_replace()

में मैंने हाल ही में jQuery UI के ऑटोकंपलेट के पूरक के लिए सर्वर-साइड टेक्स्ट हाइलाइटिंग सिस्टम लागू किया है।

आपके विचार के मेरे अनुकूलन कुछ इस तरह होगा:

$txt = 'not bold [BeginBold]Yes Bold[EndBold] not bold again'; 

$newtxt = str_replace("[BeginBold]", "<b>", $txt); 
$newtxt = str_replace("[EndBold]", "</b>", $txt); 
echo $newtxt; 

इस उत्पादन होगा:

बोल्ड नहीं हाँ बोल्ड नहीं चाल फिर से

संबंधित मुद्दे