2010-10-21 14 views
7

मेरे पास स्ट्रिंग्स हैं जो इस तरह दिखते हैं:स्ट्रिंग के बाद अक्षर हटाएं?

John Miller-Doe - Name: jdoe 
Jane Smith - Name: jsmith 
Peter Piper - Name: ppiper 
Bob Mackey-O'Donnell - Name: bmackeyodonnell 

मैं दूसरे हाइफ़न के बाद सबकुछ हटाने की कोशिश कर रहा हूं, ताकि मुझे इसके साथ छोड़ा जा सके:

John Miller-Doe 
Jane Smith 
Peter Piper 
Bob Mackey-O'Donnell 

तो, मूल रूप से, मैं हूं इससे पहले कि इसे ठीक से काट लें "- नाम:"। मैं सबस्ट्रेट और preg_replace के साथ खेल रहा हूं, लेकिन मुझे लगता है कि परिणाम प्राप्त करने के लिए मुझे उम्मीद नहीं है ... क्या कोई मदद कर सकता है?

+0

वहाँ हो सकता है एक 'जॉन मिलर - डो - नाम: ' ? अंत में हमेशा 'नाम:' होगा? –

+0

आपको लगता है कि ['s ($ str) -> पहले से पहले ('-')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L399) सहायक, जैसा कि [इस स्टैंडअलोन लाइब्रेरी] में पाया गया है (https://github.com/delight-im/PHP-Str)। – caw

उत्तर

19

यह मानते हुए कि तार हमेशा इस प्रारूप होगा, एक संभावना है:

$short = substr($str, 0, strpos($str, ' - Name:')); 

संदर्भ: substr, strpos

1
$string="Bob Mackey-O'Donnell - Name: bmackeyodonnell"; 
$parts=explode("- Name:",$string); 
$name=$parts[0]; 

हालांकि मेरा के बाद समाधान बहुत अच्छे है ...

2

फिर दूसरे हाइफ़न से ठीक पहले सब कुछ ठीक है? एक विधि

$string="Bob Mackey-O'Donnell - Name: bmackeyodonnel"; 
$remove=strrchr($string,'-'); 
//remove is now "- Name: bmackeyodonnell" 
$string=str_replace(" $remove","",$string); 
//note $remove is in quotes with a space before it, to get the space, too 
//$string is now "Bob Mackey-O'Donnell" 

बस सोचा कि मैं इसे एक विचित्र विकल्प के रूप में वहां फेंक दूंगा।

+0

साथी साझा करने के लिए धन्यवाद। मुझे इस तरह से प्यार है और यह मेरे लिए काम करता है! –

7

उपयोग पैटर्न / - Name:.*/ साथ preg_replace():

<?php 
$text = "John Miller-Doe - Name: jdoe 
Jane Smith - Name: jsmith 
Peter Piper - Name: ppiper 
Bob Mackey-O'Donnell - Name: bmackeyodonnell"; 

$result = preg_replace("/ - Name:.*/", "", $text); 
echo "result: {$result}\n"; 
?> 

आउटपुट:

result: John Miller-Doe 
Jane Smith 
Peter Piper 
Bob Mackey-O'Donnell 
+0

बहुत बहुत धन्यवाद, यह उत्तर किसी भी स्ट्रिंग के लिए उपयोग किया जा सकता है। –

0

एक क्लीनर तरीका:

$find = 'Name'; 
$fullString = 'aoisdjaoisjdoisjdNameoiasjdoijdsf'; 
$output = strstr($fullString, $find, true) . $find ?: $fullString; 
संबंधित मुद्दे