2011-03-29 10 views
6

PHP में बचने के अनुक्रम \ s द्वारा मिलान किए गए वर्णों की पूरी सूची क्या है? कुछ रेगेक्स स्वादों में इस भागने अनुक्रम में लंबवत स्थान और अन्य वर्ण शामिल हैं।PHP में मिलान किए गए व्हाइटस्पेस क्या हैं?

उत्तर

3

एस pcrepattern specifications पृष्ठ से:

सामान्य चरित्र प्रकार

\s  any white space character 

पर्ल के साथ संगतता के लिए, वीटी चरित्र (कोड 11) से मेल खाने के लिए उपयोग नहीं किया गया था, जिसने इसे POSIX "स्पेस" वर्ग से अलग किया। हालांकि, पर्ल ने रिलीज 5.18 पर वीटी जोड़ा, और पीसीआरई पर रिलीज 8.34 पर आधारित हुआ। डिफ़ॉल्ट \ s वर्ण अब एचटी (9), एलएफ (10), वीटी (11), एफएफ (12), सीआर (13), और स्पेस (32) हैं, जिन्हें "सी" में सफेद स्थान के रूप में परिभाषित किया गया है। "लोकेल। यदि लोकेल-विशिष्ट मिलान हो रहा है तो यह सूची भिन्न हो सकती है। उदाहरण के लिए, कुछ स्थानों में "गैर-ब्रेकिंग स्पेस" वर्ण (\ xA0) को सफेद स्थान, के रूप में पहचाना जाता है और अन्य में VT वर्ण नहीं है।

तो \s 5 अक्षर के साथ साथ अधिक के आधार पर मिलान हो जाएगा:

  1. PCRE लाइब्रेरी संस्करण
  2. स्थानीय सेटिंग

This test पीएचपी के विभिन्न संस्करणों के पार preg_match का परिणाम है।

+2

मैं यहां सूची की खोज में भी पहुंचा। लेकिन पृष्ठ संभवतः बदल गया है। व्हाइटस्पेस \ s के अनुरूप केवल इन 5 अक्षर का मतलब: 9 = 0x09 = क्षैतिज टैब, 10 = 0x0A = लाइन फ़ीड, 12 = 0x0C = फॉर्म फ़ीड, 13 = 0x0D = गाड़ी वापसी, सूची इस प्रकार है 32 = 0x20 = स्पेस, http://www.php.net/manual/en/regexp.reference.escape.php –

3

पीएचपी केवल क्षैतिज खाली स्थान के पात्रों के लिए \h है: http://www.php.net/manual/en/regexp.reference.escape.php

http://www.pcre.org/pcre.txt के अनुसार:

पर्ल साथ संगतता के लिए, \ रों वीटी चरित्र (कोड 11) से मेल नहीं खाता। यह इसे POSIX "स्पेस" वर्ग से अलग बनाता है। \ S वर्ण एचटी (9), एलएफ (10), एफएफ (12), सीआर (13), और अंतरिक्ष (32) हैं। यदि "लोकेल का उपयोग करें;" एक पर्ल स्क्रिप्ट में शामिल है, \ V VT charac- ter से मेल खा सकता है। पीसीआरई में, यह कभी नहीं करता है।

तो यदि "वर्टिकल स्पेस" लंबवत टैब को संदर्भित करता है, तो उत्तर नहीं है।

 
The sequences \h, \H, \v, and \V are features that were added to Perl 
at release 5.10. In contrast to the other sequences, which match only 
ASCII characters by default, these always match certain high-valued 
codepoints in UTF-8 mode, whether or not PCRE_UCP is set. 

The horizontal space characters are: 

     U+0009  Horizontal tab 
     U+0020  Space 
     U+00A0  Non-break space 
     U+1680  Ogham space mark 
     U+180E  Mongolian vowel separator 
     U+2000  En quad 
     U+2001  Em quad 
     U+2002  En space 
     U+2003  Em space 
     U+2004  Three-per-em space 
     U+2005  Four-per-em space 
     U+2006  Six-per-em space 
     U+2007  Figure space 
     U+2008  Punctuation space 
     U+2009  Thin space 
     U+200A  Hair space 
     U+202F  Narrow no-break space 
     U+205F  Medium mathematical space 
     U+3000  Ideographic space 

The vertical space characters are: 

     U+000A  Linefeed 
     U+000B  Vertical tab 
     U+000C  Formfeed 
     U+000D  Carriage return 
     U+0085  Next line 
     U+2028  Line separator 
     U+2029  Paragraph separator 
+0

लेकिन यह कुछ भी नहीं कहता है कि '\ s' इसमें शामिल है या नहीं ... –

+0

ठीक है, http://www.pcre.org/pcre.txt कहता है कि यह एक लंबवत टैब से मेल नहीं खाता है - मैं नहीं करता हूं ' टी पता है कि एक लंबवत जगह क्या है। – Kobi

+0

क्षैतिज सफेद जगह वर्ण क्या हैं? – Stephan

1

http://www.pcre.org/pcre.txt से:

\ किसी भी चरित्र है कि \ p {जेड} से मेल खाता है, प्लस हिंदुस्तान टाइम्स, वामो, एफएफ, सीआर

+4

सही ढंग से उद्धृत करते समय, यह एक संकलन-समय सेटिंग पर निर्भर करता है। और PHP उस कोड के आस-पास '#ifdef PCRE_UCP' का उपयोग करता है। इस पर भरोसा नहीं किया जाना चाहिए। – mario

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