2017-05-02 3 views
1

Ich möchte nur Ländercode und keinen Schrägstrich aus der Zeichenfolge entfernen.Nur Ländercode aus String entfernen nicht slashsh?

suppose: Telefonnummer ist +1-555-555-5555 und ich möchte, wie 555-555-5555

Mein Code ist

<?php 
$sPhoneNumber =get_post_meta($post_id, '_vfb_field-23', true); 
echo $result = preg_replace("/[^0-9]/", "", $sPhoneNumber); 
?> 

es mir eine Ausgabe wie 15555555555 gegeben, und ich will 555-555-5555

+0

Sofern Sie die vollständige Kontrolle über den Eingang haben, sollten Sie nicht davon ausgehen, dass die Telefonnummern werden durch Bindestriche getrennt werden. In vielen europäischen Ländern werden stattdessen Räume genutzt. In Nordamerika wird der erste Teil nach der Landesvorwahl (Ortsvorwahl) oft in Klammern gesetzt. Seien Sie vorsichtig bei der Annahme eines bestimmten Formats für Telefonnummern in benutzerdefiniertem Code. – pburka

Antwort

3

Verwenden Sie die folgende regex Substitution:

$result = preg_replace("/^\+\d+-/", "", $sPhoneNumber); 

Es 1+ Ziffern entfernen wird und eine -, nachdem es von Anfang an einer Schnur.

Mit dieser Lösung vermeiden Sie die Änderung von Strings, die nicht mit + gefolgt von Ziffern beginnen.

Anstelle von \d+ können Sie die Ländercodes angeben, die Sie entfernen müssen. Sprich, müssen Sie 22 und 48 Codes entfernen:

$result = preg_replace("/^\+(?:48|22)-/", "", $sPhoneNumber); 
+0

Nun, ich kann auch eine Lösung ähnlich der obigen vorschlagen: 1) überprüfe, ob der String mit einem '+' beginnt, dann 2) 'explode'/'substr'. Ich denke, eine Regex - das ist ziemlich einfach - ist in diesem Fall gut zu verwenden. –

1

Sie können mit substr zu bekomme den Teilstring nach dem ersten '-', live demo here.

substr($string, strpos($string, '-') + 1); 
1

Bitte beachten: Working Demo

<?php 
$phonenumber = '+1-555-555-555'; 
$array = explode("-", $phonenumber,2); 
echo $array['1']; 
?> 

Weitere Details PHP EXPLODE

0

die Sie interessieren, benutzen Sie preg_replace dafür,

$result = preg_replace('~^[0\D]++|\D++~', '', $sPhoneNumber); 

DEMO

0

versuchen, auf dieser Seite http://www.phpliveregex.com/p/jXB diese reg

[^\+[0-9]-].* 

diese Funktion verwenden

preg_match("/[^\+1-].*/", $input_line, $output_array); 

so grundlegend Sie Gonna finden Sie das alles nicht "+ 1-"

0

Seine sehr einfache, können wir substr() Funktion verwenden um einen Teil der Schnur zu schneiden.

<?php 
echo substr("+1-555-555-5555",3); 
?> 

Hier ist ein Link PHP substr()