2013-01-14 17 views
5

यह मेरे पास अभी तक है, लेकिन जो कुछ भी मैं कोशिश करता हूं, मेरा album-contentsubstr() के साथ छोटा नहीं होगा।preg_replace() फ़ंक्शन के अंदर substr() फ़ंक्शन का उपयोग कैसे करें?

$gallery = preg_replace('/(<div class="album-content">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery); 

अद्यतन:

बाहर कर देता है मेरी कक्षा का नाम गलत था, और मेरे regex काम करने के लिए प्रतीत होता है। मुझे आउटपुट से बचने के लिए केवल एक और str_replace() करना पड़ा। संशोधित करने से पहले

$gallery = preg_replace('/(<div class="album-desc">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery); 
$gallery = str_replace('\"album-desc\"', '"album-desc"', $gallery); 

आउटपुट:

<a href="..." class="album"> 
    <div class="album-content"><p class="album-title">Album 1</p> 
     <div class="album-desc"><p>This will be truncated by substr().</p></div> 
    </div> 
    <img src="..." /> 
</a> 

धन्यवाद सब, वैसे भी!

+1

कृपया सामग्री से पहले और बाद में कुछ पोस्ट करें, इसलिए हमारे पास एक बेहतर विचार है कि आप क्या करना चाहते हैं। –

+2

आप प्रतिस्थापन स्ट्रिंग – Tchoupi

+0

@MathieuImbert के हिस्से के रूप में 'substr()' का उपयोग नहीं कर सकते हैं, हालांकि यह अब काम करता प्रतीत होता है। मेरा अपडेट देखें। – fishbaitfood

उत्तर

3

उपयोग preg_replace_callback()

$replace = preg_replace_callback('/(asd)f/i', function($matches) { 
    $matches[1] = substr($matches[1], 0, 2); 

    return $matches[1]; 
}, 'asdf'); 

Full documentation

+0

धन्यवाद! मुझे लगता है कि मैं भविष्य में इसका उपयोग करूँगा। – fishbaitfood

0

यह

..., "'$1'" . substr("$2", 0, 50) . "'$3'", ... 
स्ट्रिंग के substr "बाहर" के साथ

होना होगा।

+0

मेरी पोस्ट अपडेट की गई, मेरा रेगेक्स काम करने लग रहा था। मैंने वैसे भी आपकी विधि की कोशिश की, लेकिन यह काम नहीं किया। – fishbaitfood

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