क्रिमसन रेग कॉम्प php. Man regcomp(3): POSIX रेग्युलर एक्सप्रेशन फंक्शन्स. POSIX त्रुटी अहवाल

सर्वांना नमस्कार, आज मला तुम्हाला रेग ऑर्गनायझरच्या कार्यक्रमाबद्दल सांगायचे आहे. विंडोज ऑपरेटिंग सिस्टमला पूर्णपणे सेवा देण्यासाठी अनेक कार्यांसह हा एक प्रोग्राम आहे. रेग ऑर्गनायझर Windows XP, Vista, 7, 8.1 आणि 10 साठी योग्य आहे. या प्रोग्रामसह, तुम्ही तुमच्या संगणकावरील OS चा वेग वाढवू शकता आणि ऑप्टिमाइझ करू शकता, अतिरिक्त संसाधने मोकळी करून देऊ शकता.

रेग ऑर्गनायझर तुम्हाला सिस्टममधून प्रोग्राम पूर्णपणे काढून टाकण्याची परवानगी देतो, तसेच कंट्रोल पॅनलद्वारे अनइंस्टॉल केल्यावर उरलेले सर्व जंक साफ करू शकतो. एक अनन्य स्टार्टअप व्यवस्थापक प्रणाली कार्यक्षमतेला शक्य तितक्या वेगवान करण्यात मदत करेल. बिल्ट-इन डिस्क क्लीनिंग फंक्शन तुमच्या कॉम्प्युटरच्या डिस्कवर आणखी मोकळी जागा मोकळी करण्यात मदत करेल. रेग ऑर्गनायझर तुमची रेजिस्ट्री साफ करणे आणि ते ऑप्टिमाइझ करणे सोपे करते. आणि त्या सर्व प्रोग्रामच्या क्षमता नाहीत.

रेग ऑर्गनायझर काय करू शकतो?

  • रेग ऑर्गनायझर तुम्हाला प्रोग्राम पूर्णपणे अनइंस्टॉल करण्यात आणि त्याचे अवशेष काढून टाकण्यास मदत करेल, ज्यामुळे रेजिस्ट्री आणि कॉम्प्युटर डिस्क्स गोंधळून जाण्यापासून प्रतिबंधित होतील.
  • क्लीनिंग स्टार्टअप (ऑटोरन) विंडोजपासून सुरू होणारे ॲप्लिकेशन काढण्यात मदत करेल. हे तुम्हाला विंडोज ऑपरेटिंग सिस्टमच्या लोडिंगची गती वाढविण्यास तसेच तुमच्या संगणकाची काही संसाधने मोकळी करण्यास अनुमती देते. याव्यतिरिक्त, स्टार्टअप विभागात तुम्ही कोणतीही शेड्यूल केलेली कार्ये हटवू शकता.
  • डिस्क्स स्वयंचलितपणे साफ केल्याने सिस्टम डिस्कवर मोठ्या प्रमाणात मोकळी जागा मोकळी होईल. विंडोज स्वतः साफ करत नसलेली प्रत्येक गोष्ट तुम्ही काढू शकता.
  • रेग ऑर्गनायझरमधील उत्तम सेटिंग्ज वापरून, तुम्ही तुमच्या गरजेनुसार Windows OS चे ऑपरेशन कस्टमाइझ करू शकता.
  • रेजिस्ट्री क्लीनिंग - रेग ऑर्गनायझर स्वतंत्रपणे विंडोज सिस्टम रेजिस्ट्रीमधील सर्व अनावश्यक आणि चुकीच्या नोंदी शोधून काढून टाकेल जे ऑपरेशनच्या स्थिरतेवर परिणाम करू शकतात.
  • रेग ऑर्गनायझर तुम्हाला रेजिस्ट्री ऑप्टिमाइझ करण्याची, रेजिस्ट्री फाइल्स कॉम्प्रेस करण्याची आणि ती डीफ्रॅगमेंट करण्याची परवानगी देतो.
  • Reg Organizer मधील सोयीस्कर रेजिस्ट्री एडिटर तुम्हाला सिस्टीम रेजिस्ट्रीसह विविध ऑपरेशन्स करण्यात मदत करेल, ज्यामध्ये निर्यात करणे, आयात करणे, मुख्य मूल्ये कॉपी करणे आणि बरेच काही समाविष्ट आहे.
  • सुलभ शोध आणि रेजिस्ट्रीमधील की बदलणे - आपल्याला आवश्यक की शोधण्याची आणि आवश्यक असल्यास त्या हटविण्याची परवानगी देते. अनुप्रयोगांमध्ये अनइंस्टॉल प्रोग्राम नसलेल्या बाबतीत किंवा अनुप्रयोग "मॅन्युअली" अनइंस्टॉल केल्यानंतर, नोंदी नोंदणीमध्ये राहतात ज्यामुळे रेजिस्ट्रीमध्ये संघर्ष होऊ शकतो, या प्रकरणात शोध आणि पुनर्स्थित रेजिस्ट्री की फंक्शन उपयुक्त ठरेल. रेग ऑर्गनायझर सखोल शोध घेतो आणि इतर प्रोग्राम जे शोधू शकत नाही ते देखील तुम्हाला शोधण्याची परवानगी देतो.
  • रेग ऑर्गनायझर प्रोग्राम इन्स्टॉलेशन दरम्यान करत असलेल्या प्रत्येक गोष्टीचे निरीक्षण करू शकतो आणि काही समस्या उद्भवल्यास, प्रोग्रामने इंस्टॉलेशन दरम्यान करण्याचा प्रयत्न केला त्या सर्व गोष्टी तुम्ही पूर्ववत करू शकता.
  • प्रोग्राम आधीच हटविलेल्या प्रोग्रामचे उर्वरित ट्रेस शोधू शकतो. जर तुम्ही प्रोग्राम चुकीच्या पद्धतीने विस्थापित केला असेल तर, Reg Organizer हटवलेल्या प्रोग्रामचे ट्रेस साफ करण्यास मदत करेल.

तुम्ही माझ्या व्हिडिओमध्ये रेग ऑर्गनायझरच्या सर्व वैशिष्ट्यांबद्दल अधिक तपशील पाहू शकता:


तुम्ही कोणतेही डाउनलोड बटण वापरून अधिकृत वेबसाइटवरून Reg Organizer डाउनलोड करू शकता.

सामग्री

ereg

ereg -- रेग्युलर एक्स्प्रेशनचे जोडलेले मूल्य
वर्णन
int ereg (स्ट्रिंग पॅटर्न, स्ट्रिंग स्ट्रिंग, ॲरे);

जोडलेली मूल्ये शोधते स्ट्रिंगमध्ये निर्दिष्ट केलेल्या नियमित अभिव्यक्तीमध्ये नमुना .

कंसात सबस्ट्रिंगसाठी जोडलेली मूल्ये आढळल्यास नमुनाआणि फंक्शन तिसऱ्या युक्तिवादासह कॉल केले गेले regs, नंतर जोडलेली मूल्ये घटकांमध्ये संग्रहित केली जातील regs. $regs मध्ये एक सबस्ट्रिंग असेल जो पहिल्या डाव्या कंसाने सुरू होतो; $regs मध्ये द्वितीय कंस इ.पासून सुरू होणारी सबस्ट्रिंग असेल. $regs मध्ये एक प्रत असेल स्ट्रिंग .

शोध केस संवेदनशील आहे.

स्ट्रिंगमध्ये पॅटर्नसाठी जुळणारे मूल्य आढळल्यास फंक्शन सत्य मिळवते किंवा कोणतीही जुळणारी मूल्ये आढळली नसल्यास किंवा त्रुटी आढळल्यास खोटे होते.

खालील कोड ISO फॉरमॅटमध्ये तारीख काढतो आणि DD.MM.YYYY फॉरमॅटमध्ये आउटपुट करतो:

उदाहरण 1. ereg() उदाहरण

जर (ereg("((4))-((1,2))-((1,2))", $date, $regs)) ( echo "$regs.$regs.$regs"; ) इतर (इको "अवैध तारीख स्वरूप: $date";)

ereg_replace

ereg_replace -- नियमित अभिव्यक्ती पुनर्स्थित करते
वर्णन
स्ट्रिंग ereg_replace(स्ट्रिंग पॅटर्न, स्ट्रिंग रिप्लेसमेंट, स्ट्रिंग स्ट्रिंग);

हे कार्य स्कॅन करते स्ट्रिंगजोडलेल्या मूल्यांना k नमुना, नंतर सापडलेला मजकूर यासह बदलतो बदली .

तर नमुनाकंसात सबस्ट्रिंग असतात, नंतर बदली\\ सारखे सबस्ट्रिंग असू शकतात संख्या, जे कंसातील अंकीय सबस्ट्रिंगशी जुळणाऱ्या मजकुराने बदलले जाईल; \\0 स्ट्रिंगच्या संपूर्ण सामग्रीवर प्रक्रिया करेल. 9 पर्यंत सबस्ट्रिंग्स वापरल्या जाऊ शकतात. कंस गटबद्ध केले जाऊ शकतात, अशा परिस्थितीत ते सुरुवातीच्या कंसाने मोजले जातात. उदाहरणार्थ, खालील कोड तीन वेळा "ही चाचणी होती" मुद्रित करेल:

उदाहरण 1. ereg_replace()

$string = "ही एक चाचणी आहे"; echo ereg_replace(" is", "was", $string); echo ereg_replace("()is", "\\1was", $string); echo ereg_replace("(()is)", "\\2was", $string);

हे देखील पहा , , आणि .

eregi

eregi -- रेग्युलर एक्स्प्रेशनमध्ये जोडलेल्या मूल्यांसाठी केस-संवेदनशील शोध
वर्णन
int eregi (स्ट्रिंग पॅटर्न, स्ट्रिंग स्ट्रिंग, ॲरे);

eregi_replace

eregi_replace -- केस-असंवेदनशील रेग्युलर एक्सप्रेशन रिप्लेसमेंट
वर्णन
स्ट्रिंग eregi_replace(स्ट्रिंग पॅटर्न, स्ट्रिंग रिप्लेसमेंट, स्ट्रिंग स्ट्रिंग);

विभाजन

स्प्लिट -- रेग्युलर एक्सप्रेशन वापरून स्ट्रिंगला ॲरेमध्ये विभाजित करते
वर्णन
ॲरे स्प्लिट (स्ट्रिंग पॅटर्न, स्ट्रिंग स्ट्रिंग, int);

स्ट्रिंगचा ॲरे मिळवते, ज्यापैकी प्रत्येक स्ट्रिंगचा एक सबस्ट्रिंग आहे, त्या स्ट्रिंगला एकमेकांपासून विभक्त केलेल्या भागांमध्ये तोडून तयार होतो नमुना. एखादी त्रुटी आढळल्यास, फंक्शन चुकीचे परत येईल.

/etc/passwd मधील एका ओळीतून पहिली ५ फील्ड मिळवण्यासाठी:

जारी केले जाईल.

हे वैशिष्ट्य केवळ केस-संवेदनशील अभिव्यक्तींना समर्थन देणाऱ्या उत्पादनांमध्ये केस-संवेदनशील तुलना प्रदान करण्यासाठी वापरले जाऊ शकते.

नमस्कार! आता आम्ही PHP + MySQL वापरून साइटवर सर्वात सोपी नोंदणी लागू करण्याचा प्रयत्न करू. हे करण्यासाठी, Apache आपल्या संगणकावर स्थापित करणे आवश्यक आहे. आमच्या स्क्रिप्टचे कार्य तत्त्व खाली दर्शविले आहे.

1. डेटाबेसमध्ये वापरकर्ते टेबल तयार करून सुरुवात करूया. यात वापरकर्ता डेटा (लॉगिन आणि पासवर्ड) असेल. चला phpmyadmin वर जाऊ (जर तुम्ही तुमच्या PC वर डेटाबेस तयार करत असाल http://localhost/phpmyadmin/). एक टेबल तयार करा वापरकर्ते, यात 3 फील्ड असतील.

मी ते mysql डेटाबेसमध्ये तयार करतो, तुम्ही ते दुसऱ्या डेटाबेसमध्ये तयार करू शकता. पुढे, आकृतीप्रमाणे मूल्ये सेट करा:

2. या टेबलशी कनेक्शन आवश्यक आहे.चला एक फाईल बनवू bd.php. त्याची सामग्री:

$db = mysql_connect("तुमचा MySQL सर्व्हर","या सर्व्हरसाठी लॉगिन","या सर्व्हरसाठी पासवर्ड");
mysql_select_db ("आम्ही कनेक्ट करत असलेल्या डेटाबेसचे नाव", $db);
?>

माझ्या बाबतीत हे असे दिसते:

$db = mysql_connect("localhost","user","1234");
mysql_select_db("mysql",$db);
?>

जतन करा bd.php.
छान! आमच्याकडे डेटाबेसमध्ये एक टेबल आहे आणि त्याच्याशी कनेक्शन आहे. आता आपण एक पृष्ठ तयार करण्यास प्रारंभ करू शकता ज्यावर वापरकर्ते त्यांचा डेटा सोडतील.

3. सामग्रीसह reg.php फाइल तयार करा (आतील सर्व टिप्पण्या):



नोंदणी


नोंदणी


















4. एक फाइल तयार करा, जे डेटाबेसमध्ये डेटा प्रविष्ट करेल आणि वापरकर्ता जतन करेल. save_user.php(आतील टिप्पण्या):



{
}
// लॉगिन आणि पासवर्ड एंटर केले असल्यास, आम्ही त्यावर प्रक्रिया करतो जेणेकरून टॅग आणि स्क्रिप्ट कार्य करत नाहीत, लोक काय प्रविष्ट करू शकतात हे तुम्हाला कधीच माहित नाही.


//अतिरिक्त जागा काढा
$login = trim($login);
$password = trim($password);
// डेटाबेसशी कनेक्ट करा
// समान लॉगिनसह वापरकर्त्याचे अस्तित्व तपासा
$result = mysql_query("वापरकर्त्यांकडून आयडी निवडा जेथे login="$login"",$db);
जर (!रिकामे($myrow["id"])) (
exit("क्षमस्व, तुम्ही प्रविष्ट केलेले लॉगिन आधीच नोंदणीकृत आहे. कृपया दुसरे लॉगिन प्रविष्ट करा.");
}
// जर असे नसेल तर डेटा सेव्ह करा
$result2 = mysql_query("वापरकर्त्यांना इन्सर्ट करा (लॉगिन,पासवर्ड) VALUES("$लॉगिन","$पासवर्ड")");
// त्रुटी आहेत का ते तपासा
जर ($result2=="TRUE")
{
echo "आपण यशस्वीरित्या नोंदणी केली आहे! आता आपण साइट प्रविष्ट करू शकता. मुख्यपृष्ठ";
}
इतर(
प्रतिध्वनी "त्रुटी! आपण नोंदणीकृत नाही.";
}
?>

5. आता आमचे वापरकर्ते नोंदणी करू शकतात!पुढे, साइटमध्ये प्रवेश करण्यासाठी आधीपासूनच नोंदणीकृत वापरकर्त्यांसाठी तुम्हाला "दार" तयार करण्याची आवश्यकता आहे. index.php(आतील टिप्पण्या):

// संपूर्ण प्रक्रिया सत्रांमध्ये कार्य करते. वापरकर्त्याचा डेटा साइटवर असताना तो संग्रहित केला जातो. त्यांना पृष्ठाच्या अगदी सुरुवातीलाच लाँच करणे फार महत्वाचे आहे!!!
session_start();
?>


मुखपृष्ठ


मुखपृष्ठ











नोंदणी करा



// लॉगिन आणि यूजर आयडी व्हेरिएबल्स रिक्त आहेत का ते तपासा
जर (रिकामे($_SESSION["लॉगिन"]) किंवा रिकामे($_SESSION["id"]))
{
// रिक्त असल्यास, आम्ही दुवा प्रदर्शित करत नाही
इको "तुम्ही अतिथी म्हणून लॉग इन आहात
ही लिंक फक्त नोंदणीकृत वापरकर्त्यांसाठी उपलब्ध आहे";
}
इतर
{

फाईलमध्ये index.phpआम्ही एक दुवा प्रदर्शित करू जो फक्त नोंदणीकृत वापरकर्त्यांसाठी खुला असेल. हा स्क्रिप्टचा संपूर्ण मुद्दा आहे - कोणत्याही डेटावर प्रवेश मर्यादित करण्यासाठी.

6. प्रविष्ट केलेल्या लॉगिन आणि पासवर्डची पडताळणी करणारी एक फाइल शिल्लक आहे. testreg.php (आतील टिप्पण्या):

session_start();// संपूर्ण प्रक्रिया सत्रांवर कार्य करते. वापरकर्त्याचा डेटा साइटवर असताना तो संग्रहित केला जातो. त्यांना पृष्ठाच्या अगदी सुरुवातीलाच लाँच करणे फार महत्वाचे आहे!!!
if (isset($_POST["login"])) ( $login = $_POST["login"]; if ($login == "") ( unset($login);) ) // द्वारे प्रविष्ट केलेले लॉगिन प्रविष्ट करा वापरकर्ता $login व्हेरिएबलमध्ये प्रवेश करतो, जर ते रिक्त असेल तर व्हेरिएबल नष्ट करा
if (isset($_POST["password"])) ( $password=$_POST["password"]; if ($password =="") ( unset($password);))
// वापरकर्त्याने प्रविष्ट केलेला पासवर्ड $password व्हेरिएबलमध्ये टाका, जर तो रिक्त असेल तर व्हेरिएबल नष्ट करा
जर (empty($login) किंवा empty($password)) // जर वापरकर्त्याने लॉगिन किंवा पासवर्ड टाकला नसेल, तर आम्ही एरर जारी करतो आणि स्क्रिप्ट थांबवतो.
{
बाहेर पडा("आपण सर्व माहिती प्रविष्ट केलेली नाही, परत जा आणि सर्व फील्ड भरा!");
}
// लॉगिन आणि पासवर्ड एंटर केले असल्यास, आम्ही त्यावर प्रक्रिया करतो जेणेकरून टॅग आणि स्क्रिप्ट कार्य करत नाहीत, लोक काय प्रविष्ट करू शकतात हे तुम्हाला कधीच माहित नाही.
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//अतिरिक्त जागा काढा
$login = trim($login);
$password = trim($password);
// डेटाबेसशी कनेक्ट करा
समाविष्ट करा

$result = mysql_query("निवडा * वापरकर्त्यांकडून जेथे लॉगिन="$लॉगिन"",$db); // प्रविष्ट केलेल्या लॉगिनसह वापरकर्त्याबद्दल सर्व डेटा डेटाबेसमधून पुनर्प्राप्त करा
$myrow = mysql_fetch_array($result);
जर (रिकामे($myrow["पासवर्ड"]))
{
// एंटर केलेल्या लॉगिनसह वापरकर्ता अस्तित्वात नसल्यास
}
इतर(
// अस्तित्वात असल्यास, नंतर पासवर्ड तपासा
जर ($myrow["password"]==$password) (
// पासवर्ड जुळत असल्यास, आम्ही वापरकर्त्यासाठी सत्र सुरू करू! तुम्ही त्याचे अभिनंदन करू शकता, तो आत आला!
$_SESSION["login"]=$myrow["लॉगिन"];
$_SESSION["id"]=$myrow["id"];//हा डेटा बऱ्याचदा वापरला जातो, त्यामुळे लॉग इन केलेला वापरकर्ता "तो त्याच्यासोबत घेऊन जाईल"
echo "तुम्ही साइटवर यशस्वीरित्या प्रवेश केला आहे! मुख्यपृष्ठ";
}
इतर(
// पासवर्ड जुळत नसल्यास

बाहेर पडा ("क्षमस्व, तुम्ही प्रविष्ट केलेला लॉगिन किंवा पासवर्ड चुकीचा आहे.");
}
}
?>

ठीक आहे आता सर्व संपले आहे! धडा कंटाळवाणा असू शकतो, परंतु खूप उपयुक्त आहे. येथे फक्त नोंदणीची कल्पना दर्शविली आहे, नंतर तुम्ही त्यात सुधारणा करू शकता: संरक्षण, डिझाइन, डेटा फील्ड, अवतार लोड करणे, खात्यातून लॉग आउट करणे (हे करण्यासाठी, फंक्शनसह सत्रातील व्हेरिएबल्स नष्ट करा. अनसेट) आणि असेच. शुभेच्छा!

मी सर्वकाही तपासले, ते योग्यरित्या कार्य करते!

#समाविष्ट करा
#समाविष्ट करा
int regcomp(regex_t*preg, const char *regex, intcflags);
int regexec(const regex_t *preg, const char *स्ट्रिंग, आकार_टीnmatch,
regmatch_tpmatch, intध्वज);
size_t regerror(intएररकोड, const regex_t *preg, चार *errbuf,
आकार_टीerrbuf_size);
void regfree(regex_t*preg);

वर्णन

POSIX नियमित अभिव्यक्ती संकलित करत आहे

कार्य regcomp() वापरून नंतरच्या शोधांसाठी योग्य असलेल्या फॉरमॅटमध्ये नियमित अभिव्यक्ती संकलित करण्यासाठी वापरली जाते regexec().

regcomp() बफर टेम्पलेट स्टोरेज क्षेत्रासाठी एक पॉइंटर पास केला जातो preg, शून्य-टर्मिनेटेड स्ट्रिंगकडे पॉइंटर regexआणि झेंडे cflags, संकलन प्रकार निर्धारित करण्यासाठी वापरले जाते.

सर्व नियमित अभिव्यक्ती शोध संकलित बफर नमुना वापरून केले जाणे आवश्यक आहे, म्हणून regexec() नेहमी फंक्शनद्वारे सुरू केलेल्या बफर टेम्पलेटच्या पत्त्यासह कॉल करणे आवश्यक आहे regcomp().

अर्थ cflags bitwise असू शकते किंवाखालीलपैकी शून्य किंवा अधिक मूल्ये:

REG_EXTENDEDव्याख्या दरम्यान POSIX विस्तारित नियमित अभिव्यक्ती वाक्यरचना वापरा regex. हा ध्वज सक्षम केलेला नसल्यास, POSIX साधा रेग्युलर एक्सप्रेशन सिंटॅक्स वापरला जातो. REG_ICASEकेसकडे दुर्लक्ष करा. त्यानंतरचे शोध regexec() हा बफर पॅटर्न वापरणे केस सेन्सेटिव्ह असणार नाही. REG_NOSUBसामन्यांच्या स्थितीचा अहवाल देऊ नका. पर्याय nmatchआणि pmatchच्या साठी regexec() दिलेला बफर टेम्पलेट हा ध्वज सक्षम करून संकलित केला असल्यास दुर्लक्ष केले जाते. REG_NEWLINEकोणत्याही वर्णासह जुळणारे ऑपरेटर नवीन रेखा वर्णाशी जुळत नाहीत.

न जुळणाऱ्या वर्णांची यादी ( [^...] ) न्युलाइन कॅरेक्टरशिवाय नवीन ओळ सारखी नसते.

स्ट्रिंगच्या सुरुवातीच्या आधारावर तुलना ऑपरेटर ( ^ ) नवीन रेषेनंतर लगेच रिकाम्या स्ट्रिंगशी जुळते, काहीही असो ध्वज, अंमलबजावणी ध्वज regexec(), समाविष्ट REG_NOTBOL.

ओळीच्या शेवटी तुलना करणारा ऑपरेटर ($) रिकाम्या स्ट्रिंगशी स्टार्ट-ऑफ-लाइन वर्णापर्यंत जुळतो, काहीही असो ध्वजसमाविष्टीत आहे REG_NOTEOL.

POSIX नियमित अभिव्यक्तीशी तुलना

कार्य regexec() नल-टर्मिनेटेड स्ट्रिंगची पूर्व-प्रक्रिया केलेल्या बफर पॅटर्नशी तुलना करण्यासाठी वापरला जातो preg. युक्तिवाद nmatchआणि pmatchकोणत्याही सामन्यांच्या स्थानाबद्दल माहिती देण्यासाठी वापरले जातात. अर्थ ध्वज bitwise असू शकते किंवाएक किंवा दोन्ही मूल्ये REG_NOTBOLआणि REG_NOTEOL. ही मूल्ये खाली वर्णन केल्याप्रमाणे तुलना प्रक्रियेचे वर्तन निर्धारित करतात. REG_NOTBOLस्ट्रिंगच्या सुरुवातीला तुलना करणारा ऑपरेटर नेहमी अयशस्वी होतो (परंतु वर वर्णन केलेला संकलन ध्वज पहा REG_NEWLINE). हा ध्वज जेव्हा वापरला जाऊ शकतो regexec() स्ट्रिंगचे वेगळे भाग प्रसारित केले जातात आणि या प्रकरणात अशा स्ट्रिंगची सुरुवात नवीन ओळीची सुरुवात म्हणून समजू नये. REG_NOTEOLएंड-ऑफ-लाइन तुलना ऑपरेटर नेहमी अयशस्वी होतो (परंतु वर वर्णन केलेले संकलन ध्वज पहा REG_NEWLINE).

बाइट ऑफसेट

तर REG_NOSUBबफर टेम्पलेट संकलित करताना सेट केलेले नाही, सामन्यांच्या स्थितीबद्दल माहिती मिळवणे शक्य आहे. अर्थ pmatchकिमान असणे आवश्यक आहे nmatchघटक. ते भरत आहेत regexec() इनलाइन जुळण्यांचे पत्ते. सह सुरू होणाऱ्या उप-अभिव्यक्तीचे ऑफसेट i- उघडा कंस, मध्ये संग्रहित pmatch[मी]. संपूर्ण रेग्युलर एक्सप्रेशनचा जुळणी पत्ता यामध्ये संग्रहित केला जातो pmatch(लक्षात ठेवा की मॅच ऑफसेट परत करण्यासाठी एन subexpressions, अर्थ nmatchकमी नसावे N+1). कोणत्याही न वापरलेले संरचना घटकांमध्ये -1 चे मूल्य असेल.

रचना regmatch_t, जो एक प्रकार आहे pmatch, मध्ये परिभाषित :

Typedef रचना ( regoff_t rm_so; regoff_t rm_eo; ) regmatch_t;

प्रत्येक घटक rm_so, -1 च्या समान नाही, दिलेल्या स्ट्रिंगमधील सर्वात मोठ्या सबस्ट्रिंगच्या पुढील जुळणीचा प्रारंभ ऑफसेट सूचित करतो. सापेक्ष घटक rm_eoजुळणीच्या शेवटी ऑफसेट दर्शवते, जे जुळलेल्या मजकुरानंतरचे पहिले वर्ण आहे.

POSIX त्रुटी अहवाल

कार्य त्रुटीकडून प्राप्त होणारे एरर कोड रूपांतरित करण्यासाठी वापरले जाते regcomp() आणि regexec(), त्रुटी संदेश ओळींमध्ये.

IN त्रुटीप्रसारित: त्रुटी कोड एररकोड, बफर नमुना preg, कॅरेक्टर स्ट्रिंग बफरसाठी पॉइंटर errbufआणि पंक्ती बफर आकार errbuf_size. फंक्शन आकार परत करते errbuf, जे त्रुटी संदेश शून्य-टर्मिनेटेड स्ट्रिंग म्हणून संचयित करण्यासाठी आवश्यक आहे. तर errbuf, आणि errbuf_sizeशून्याच्या बरोबरीचे नाहीत errbufप्रथम भरले errbuf_size - 1त्रुटी संदेश वर्ण आणि शून्य बाइट ("\0") सह समाप्त होते.

POSIX टेम्पलेट बफर मुक्त करत आहे

कार्य regfree() बफर टेम्पलेटला वाटप केलेली मेमरी मुक्त करते pregवापरून संकलन प्रक्रियेदरम्यान regcomp().

मूल्य परत करा

कार्य regcomp() यशस्वी संकलनावर शून्य किंवा अन्यथा एरर कोड मिळवते.

कार्य regexec() सामन्यावर शून्य परतावा किंवा REG_NOMATCH, कोणतेही सामने नसल्यास.

त्रुटी

कार्य regcomp() खालील त्रुटी परत करू शकतात: REG_BADBRबॅकलिंक ऑपरेटरचा चुकीचा वापर. REG_BADPATटेम्पलेट ऑपरेटर्सचा चुकीचा वापर, जसे की समूह किंवा सूची ऑपरेटर. REG_BADRPTपुनरावृत्ती ऑपरेटरचा चुकीचा वापर, जसे की प्रथम वर्ण म्हणून "*" वापरणे. REG_EBRACEइंटरव्हल ऑपरेटरमध्ये जोडलेले कंस. REG_EBRACKसूची विधानांमध्ये जोडलेले चौरस कंस. REG_ECOLLATEअवैध क्रमवारी घटक. REG_ECTYPEअज्ञात वर्ण वर्ग नाव. REG_EENDसंभाव्य त्रुटी. POSIX.2 मध्ये परिभाषित नाही. REG_EESCAPEमागचा बॅकस्लॅश. REG_EPARENग्रुपिंग ऑपरेटरमध्ये जोडलेले कंस. REG_ERANGEक्षेत्र ऑपरेटरचा चुकीचा वापर: उदाहरणार्थ, क्षेत्राचा शेवट त्याच्या सुरुवातीपूर्वी दिसून येतो. REG_ESIZEसंकलित नियमित अभिव्यक्तीसाठी 64 KB पेक्षा मोठा बफर नमुना आवश्यक आहे. हे POSIX.2 मध्ये परिभाषित केलेले नाही. REG_ESPACEरेग्युलर एक्स्प्रेशन रूटीनची मेमरी संपली आहे. REG_ESUBREGसबएक्सप्रेशनसाठी अवैध बॅकरेफरन्स.

मी या लेखाचा अभ्यास सुरू करणाऱ्या प्रत्येकाला समर्पित करण्याचा निर्णय घेतला PHPकारण प्रत्येकाला समान त्रुटी येते. ते याची परवानगी का देतात हे मला माहित नाही, परंतु ते नेहमीच ते करतात. मी अतिशयोक्तीशिवाय म्हणेन की मला आधीच सुमारे शंभर प्रश्न प्राप्त झाले आहेत, ज्यांची उत्तरे या लेखात दिली जातील. ही त्रुटी संबंधित आहे PHP मध्ये चुकीचे लाँच.

जसे जवळजवळ सर्व नवशिक्या करतात:

  1. तयार करा PHP फाइल(कधी कधी HTML फाइल, परंतु हे सर्वात नवशिक्या आहेत).
  2. ते तिथे लिहून ठेवा PHP कोड.
  3. आणि ते ब्राउझरमध्ये उघडण्यासाठी डबल-क्लिक करतात.

याचा परिणाम असा आहे की ब्राउझर कोड उघडतो, परंतु तो अंमलात आणण्याची घाई नाही. हे साध्या मजकुरात कोडचे काही तुकडे दाखवते किंवा काहीही दाखवत नाही.

या दृष्टिकोनाची चूक अशी आहे की विद्यार्थ्याला ते समजत नाही PHP ही सर्व्हर-साइड भाषा आहे, ग्राहक नाही. या HTMLकिंवा JavaScriptक्लायंट भाषा, त्या अर्थातच ब्राउझरद्वारे प्रक्रिया केल्या जातात. पण त्यासाठी PHP ला दुभाष्याची गरज आहे. आणि हा इंटरप्रिटर सर्व्हरने लाँच केला आहे.

निष्कर्ष: तुम्हाला सर्व्हरद्वारे PHP कोड चालवणे आवश्यक आहे. जर तुझ्याकडे असेल डेनवर, म्हणजे, त्याच्याद्वारे.

आता, डेनवर मार्गे PHP कोड कसा चालवायचा. बहुतेक नवशिक्या पुन्हा तीच चूक करतात. ते सर्वकाही योग्यरित्या करत आहेत, आवश्यक फोल्डर तयार करत आहेत, रीस्टार्ट करत आहेत डेनवरआणि असे दिसते की फाइलला योग्यरित्या कॉल करणे बाकी आहे. परंतु येथे पुन्हा एक त्रुटी आहे: ते पुन्हा फक्त ब्राउझरमध्ये फाइल उघडतात (एकतर फाइल ब्राउझरमध्ये ड्रॅग करून किंवा डबल-क्लिक करून). ॲड्रेस बारमधील पत्त्याद्वारे हे सहजपणे पाहिले जाऊ शकते. असे काहीतरी असेल: file:///Z:\home\mysite.local\www\script.php.

आणि तुम्हाला ते योग्यरित्या लाँच करणे आवश्यक आहे, आभासी होस्ट पत्ता प्रविष्ट करणे. म्हणजेच, थेट ब्राउझरच्या ॲड्रेस बारमध्ये, प्रविष्ट करा: http://mysite.local/script.php- तेच आहे, आता स्क्रिप्ट चालेल आणि त्याचा परिणाम प्रदर्शित करेल.

मला आशा आहे की हा लेख अनेक नवशिक्यांना मदत करेल जे नुकतेच अभ्यास करण्यास सुरुवात करत आहेत PHP.