2011-11-16 18 views
21

संभव डुप्लिकेट बदलते "सीमान्तक अक्षरांकीय या बैकस्लैश नहीं होना चाहिए":
Converting ereg expressions to pregसमस्या निवारण त्रुटि एरेग() preg_match लिए()

<?php 
$searchtag = "google"; 
$link = "http://images.google.com/images?hl=de&q=$searchtag&btnG=Bilder-Suche&gbv=1"; 
$code = file_get_contents($link,'r'); 
ereg("imgurl=http://www.[A-Za-z0-9-]*.[A-Za-z]*[^.]*.[A-Za-z]*", $code, $img); 
ereg("http://(.*)", $img[0], $img_pic); 
echo '<img src="'.$img_pic[0].'" width="70" height="70">'; ?> 

और मैं इस त्रुटि मिलती है

बहिष्कृत: फ़ंक्शन ereg() को C: \ P में बहिष्कृत किया गया है लाइन 5

पर रेग्राम फ़ाइलें \ EasyPHP-5.3.8.1 \ www \ m \ img.php सी: \ प्रोग्राम फ़ाइलें \ EasyPHP-5.3.8.1 \ www \ m \ img में फ़ंक्शन ereg() को बहिष्कृत किया गया है। लाइन पर php 6

() के कार्यों यह त्रुटि

चेतावनी:() के [function.preg मैचों]: \ Program Files \: सीमान्तक अक्षरांकीय या सी में बैकस्लैश नहीं होना चाहिए EasyPHP-5.3.8.1 \ www \ m \ img.php लाइन 6

चेतावनी: preg_match() [function.preg-match]: Del imiter अक्षरांकीय या सी में बैकस्लैश नहीं होना चाहिए: \ Program Files \ EasyPHP-5.3.8.1 \ लाइन 7

+0

जुड़ा हुआ सवाल अपने सवाल का जवाब कर सकते हैं लेकिन यह कैसे सवाल डुप्लिकेट करता है? –

उत्तर

45
  1. ereg मान्य नहीं है। इसका इस्तेमाल न करें।
  2. preg फ़ंक्शंस सभी "पर्ल नियमित अभिव्यक्ति" हैं जिसका अर्थ है कि आपको अपने रेगेक्स पर कुछ प्रकार की शुरुआत और अंत मार्कर होना चाहिए। अक्सर यह / या # होगा, लेकिन कोई गैर अल्फा-न्यूमेरिक ठीक करेगा।

उदाहरण के लिए, इन काम करेगा:

preg_match("/foo/u",$needle,$haystack); 
preg_match("#foo#i",$needle,$haystack); 
preg_match("@[email protected]",$needle,$haystack); 
preg_match("\$foo\$w",$needle,$haystack); // bad idea because `$` means something 
              // in regex but it is valid anyway 
              // also, they need to be escaped since 
              // I'm using " instead of ' 

लेकिन यह ऐसा नहीं करेंगे:

preg_match("foo",$needle,$haystack); // no delimiter! 
+0

व्याख्या करने के लिए धन्यवाद! – gordon33

+1

जब मैं preg_match ("/ foo/g", $ सुई, $ हैस्टैक) का प्रयास करता हूं; यह काम नहीं करता है। मुझे एक PHP चेतावनी मिली, अज्ञात संशोधक 'जी' – James

+0

[इस उत्तर] के अनुसार [http://stackoverflow.com/a/3578703/1676444) किसी अन्य प्रश्न पर, '/ g' पैटर्न संशोधक PHP में काम नहीं करेगा। आपको अपने उदाहरण में 'preg_match_all' का उपयोग करने की आवश्यकता होगी। [PHP के लिए पैटर्न संशोधक की सूची] (http://php.net/manual/en/reference.pcre.pattern.modifiers.php) – Turnerj

3

पर www \ m \ img.php preg_match() अपने regex के साथ शुरू करते हैं और एक परिसीमक साथ समाप्त होना चाहिए जैसे / कुछ अपवादों के साथ (उदाहरण के लिए केस-असंवेदनशील के अंत में "i" जोड़ना)।

उदा।

preg_match('/[regex]/i', $string) 
+0

"एक डिलीमीटर कोई गैर-अल्फान्यूमेरिक, गैर-बैकस्लैश, गैर-व्हाइटस्पेस वर्ण हो सकता है।" [मैनुअल] (http://www.php.net/manual/en/regexp.reference.delimiters.php)। लेकिन हाँ, आप सही हैं, डिलीमीटर गायब हैं। – lonesomeday

+0

आह हाँ। धन्यवाद मैं अपनी पोस्ट अपडेट करूंगा! –

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