के साथ डबल
को प्रतिस्थापित करना, मैं अपने सीएमएस में आरटीएफ डेटा लिखने के लिए nicEdit का उपयोग करता हूं।php:</p><p>
<p>hello first line</p><p>this is a second line<br />this is a 3rd line</p>
तो मेरे वर्तमान समाधान यह है:
hello first line<br><br />this is a second line<br />this is a 3rd line
इस के बाद से एक समाचार साइट के लिए है, मैं बहुत अंतिम एचटीएमएल पसंद करते हैं इस तरह होने के लिए: समस्या यह है कि इस तरह तार उत्पन्न करता है:
- मैं स्ट्रिंग
- की शुरुआत/अंत में
<br />
के लिए $ डेटा ट्रिम करने के लिए सभी स्ट्रिंग है 2की जगह की जरूरत है</p><p>
के साथया अधिक (एक एकल<br />
की अनुमति है)। - अंत में, अंत
पर शुरू में <p>
और </p>
जोड़ने मैं केवल 1 और 3 अब तक की है। क्या कोई मुझे चरण 2 के साथ हाथ दे सकता है?
function replace_br($data) {
# step 1
$data = trim($data,'<p>');
$data = trim($data,'</p>');
$data = trim($data,'<br />');
# step 2 ???
// preg_replace() ?
# step 3
$data = '<p>'.$data.'</p>';
return $data;
}
धन्यवाद!
ps: विशिष्ट परिस्थितियों से बचने के लिए यह बेहतर होगा। उदाहरण: "hello<br /><br /><br /><br /><br />too much space
" - उन 5 breaklines भी सिर्फ एक "</p><p>
"
अंतिम समाधान करने के लिए परिवर्तित किया जाना चाहिए
function sanitize_content($data) {
$data = strip_tags($data,'<p>,<br>,<img>,<a>,<strong>,<u>,<em>,<blockquote>,<ol>,<ul>,<li>,<span>');
$data = trim($data,'<p>');
$data = trim($data,'</p>');
$data = trim($data,'<br />');
$data = preg_replace('#(?:<br\s*/?>\s*?){2,}#','</p><p>',$data);
$data = '<p>'.$data.'</p>';
return $data;
}
आप आदमी हैं! हेहे, preg_replace ऐसा करने का सबसे प्रभावी तरीका है। धन्यवाद! मुझे regexp बेहतर सीखना है। – andufo
'
' के बारे में क्या? – Gumbo
को "?" लागू करते समय भी ध्यान रखा जा रहा है regexp – andufo