2012-08-29 18 views
6

मैं एक डेटाबेस है कि नाम है और मैं PHP के नाम पर अंतरिक्ष, डेटा उदाहरण के बाद की जगह उपयोग करना चाहते हैं:PHP में किसी स्थान के बाद मैं सबकुछ कैसे हटा सकता हूं?

$x="Laura Smith"; 
$y="John. Smith" 
$z="John Doe"; 

मैं इसे वापस करने के लिए

Laura 
John. 
John 

उत्तर

13

क्या यह चाहते हैं, यह कुछ भी बदल देता है अंतरिक्ष चरित्र के बाद। डैश के लिए भी इस्तेमाल किया जा सकता:

$str=substr($str, 0, strrpos($str, ' ')); 
+8

दो संभावित समस्याओं: आप 'strrpos का उपयोग करते हैं() ', * आखिरी * व्हाइटस्पेस की खोज की गई है और आप" हैलो नाइस वर्ल्ड "जैसे तारों के लिए" हैलो नाइस "जैसे नामों के साथ समाप्त हो सकते हैं। दूसरा मुद्दा यह है कि नाम में कोई सफेद स्थान नहीं होने पर यह कुछ भी वापस नहीं करेगा। हालांकि यह व्यवहार वांछित हो सकता है, यह भी परेशानियों का कारण बन सकता है। – str

5

regex का उपयोग करने के लिए कोई जरूरत नहीं है, बस विस्फोट विधि का उपयोग करें।

$item = explode(" ", $x); 
echo $item[0]; //Laura 
+1

मुझे लगता है कि आप $ item = विस्फोट ("", $ x) [0] के रूप में भी जा सकते हैं; –

-1

$ x = "लौरा स्मिथ"; $ temparray = implode ('', $ x); echo $ temparray [0];

मैं माफी चाहता है, कभी कभी फटना अप मिश्रण और विस्फोट ...

0

आप इस

$str = preg_split ('/\s/',$x); 
print $str[0]; 
7

की तरह भी कर सकते हैं की कोशिश करो इस

<?php 
$x = "Laura Smith"; 
echo strtok($x, " "); // Laura 
?> 

strtok

0

TheBlackBenzKid द्वारा प्रदान की गई विधि प्रश्न के लिए मान्य है - howev जब एक तर्क के साथ प्रस्तुत किया गया जिसमें कोई रिक्त स्थान नहीं है, तो यह एक खाली स्ट्रिंग वापस कर देगा।

हालांकि regexes अधिक computationally महंगा हो जाएगा, वे एक बहुत अधिक flexibiltiy प्रदान करते हैं जैसे:

list($s) = explode(' ',$s); 

मैं:

function get_first_word($str) 
{ 
return (preg_match('/(\S)*/', $str, $matches) ? $matches[0] : $str); 
} 
15

बस मिश्रण में जोड़ने के लिए, मैं हाल ही में इस तकनीक सीखा यद्यपि मैंने एक त्वरित बेंचमार्क किया है, क्योंकि मैं पहले स्ट्रैटोक विधि में नहीं आया हूं, और स्ट्रेटोक मेरी सूची/विस्फोट समाधान से 25% तेज है, उदाहरण के तारों पर।

इसके अलावा, प्रारंभिक स्ट्रिंग जितना लंबा/अधिक सीमित होता है, उतना बड़ा प्रदर्शन अंतराल बन जाता है। 5000 शब्दों का एक ब्लॉक दें, और विस्फोट 5000 तत्वों की सरणी बना देगा। strtok सिर्फ पहले "तत्व" ले जाएगा और बाकी को एक स्ट्रिंग के रूप में स्मृति में छोड़ देगा।

तो स्ट्रेटोक मेरे लिए जीतता है।

$s = strtok($s,' '); 
+0

यह स्वीकार्य उत्तर होना चाहिए। प्रदर्शन की जांच के लिए धन्यवाद। – Marcel

0

इस उत्तर इस के साथ स्वीकार कर लिया answer.Using strpos के मामले में पहला अंतरिक्ष के बाद सब कुछ निकाल देंगे और नहीं पिछले और substr

$str = "CP hello jldjslf0"; 
$str = substr($str, 0, strpos($str, ' ')); 
echo $str;