मेरे पास एक ऐसी स्थिति है जहां मुझे HTML के स्रोत में पथ द्वारा दो कॉलों को अलग करने की आवश्यकता है। आईएमजी टैग इस तरह दिखता है

<img src="/folder/12280218/160024536.images.jpg" />

मैं स्रोत को बदलने की योजना बना रहा हूं

<img src="/folder/12280218/160024536.images.jpg/1" />

स्रोत के अंत में "/1" देखें

मुझे इसकी आवश्यकता है ताकि जब मैं इस छवि की सेवा कर रहा हूं तो मैं नियंत्रक में प्रवाह बदल सकता हूं।

मैंने अब तक यही कोशिश की है।

my $string = '<p><img src="/folder/12280218/160024536.images.jpg" /></p>';

$string =~ s/<img\s+src\=\"(.*)"\s+\/><\/p>/<img src\=\"$1\/1" \><\/p>/g;

यह तब तक काम कर रहा है जब तक $string ऐसा दिखता है। हमारे एप्लिकेशन में, उपयोगकर्ता के पास CKEditor का उपयोग करके HTML इनपुट को बदलने की क्षमता है। वह src विशेषता के पहले या बाद में width="800" जोड़कर इमेज टैग को बदल सकता है। मैं इन सभी स्थितियों को संभालने के लिए नियमित अभिव्यक्ति चाहता हूं।

कृपया मुझे बताएं कि आगे कैसे बढ़ा जाए। अग्रिम में धन्यवाद।

-1
Ash_and_Perl 9 मई 2017, 14:16
3
रेगेक्स के बजाय HTML पार्सर का उपयोग करें
 – 
Jens
9 मई 2017, 14:18
2
मुझे लगता है कि एक क्वेरी पैरामीटर जोड़ना बेहतर होगा /folder/12280218/160024536.images.jpg?mode=2
 – 
Borodin
9 मई 2017, 14:20

1 उत्तर

सबसे बढ़िया उत्तर

बदलें :
(<img.*src="[^"]*)(".*\/>)
द्वारा
$1/1$2

डेमो यहां

संपादित करें: अन्य विशेषताओं (जैसे "चौड़ाई" भाग) के साथ स्थितियों को संभालने के लिए रेगेक्स को बदल दिया

0
Gawil 9 मई 2017, 15:33
यदि आपके पास एक पंक्ति में दो img टैग हैं, तो आपका regexp एक को हटाने जा रहा है।
 – 
mirod
9 मई 2017, 17:07
डेमो में, मेरे पास वास्तव में एक पंक्ति में 3 img टैग हैं
 – 
Gawil
9 मई 2017, 17:24