Remove only country code from string not slahsh? - php

I want to remove only country code not slash from string .
suppose: phone number is +1-555-555-5555 and i want like 555-555-5555
My code is
<?php
$sPhoneNumber =get_post_meta($post_id, '_vfb_field-23', true);
echo $result = preg_replace("/[^0-9]/", "", $sPhoneNumber);
?>
it given me output like 15555555555 and i want 555-555-5555

Use the following regex substitution:
$result = preg_replace("/^\+\d+-/", "", $sPhoneNumber);
It will remove 1+ digits and a - after it from the start of a string.
Using this solution, you will avoid changing strings that do not start with + followed with digits.
Instead of \d+ you may specify the country codes you need to remove. Say, you need to remove 22 and 48 codes:
$result = preg_replace("/^\+(?:48|22)-/", "", $sPhoneNumber);

You can use substr to get the substring after first '-', live demo here.
substr($string, strpos($string, '-') + 1);

Please refer : Working Demo
<?php
$phonenumber = '+1-555-555-555';
$array = explode("-", $phonenumber,2);
echo $array['1'];
?>
For more details PHP EXPLODE

Try this, use preg_replace for it,
$result = preg_replace('~^[0\D]++|\D++~', '', $sPhoneNumber);
DEMO

try on this site
http://www.phpliveregex.com/p/jXB
this reg
[^\+[0-9]-].*
using this function
preg_match("/[^\+1-].*/", $input_line, $output_array);
so basic you gonna find all the is not "+1-"

Its very simple, we can use substr() function to cut portion of string.
<?php
echo substr("+1-555-555-5555",3);
?>
Here's a link PHP substr()

Related

How to get last part of a string?

I have this string:
"application/controllers/backend"
I want get:
backend
of course the backend it's dynamic, so could be change, so I'm looking for a solution that allow me to get only the last part of the string. How I can do that?
You can take the advantage of basename() to get the last part
in your case, it will be
basename("application/controllers/backend");
Output:
backend
Some thing like this :
echo end(explode("/", $url));
If this thorws error then do :
$parts = explode("/", $url);
echo end($parts);
$arr = explode ("/", $string);
//$arr[2] is your third element in the string
http://php.net/manual/en/function.explode.php
Just use
basename("application/controllers/backend");
http://php.net/manual/en/function.basename.php
And, if you want to do it with a regex:
$result = (preg_match('%.*[/\\\\](.*?)$%', $url, $regs)) ? $regs[1] : '';
You did ask initially for a solution with regex, so, although the other answers haven't involved regex, here is one approach which does.
You can use preg_match and str_replace for this:
$string = '"application/controllers/backend"';
preg_match('/[^\/]+"/', $string, $matches);
$last_item = str_replace('"','',$matches[0]);
$last_item is now a string containing the word backend.

How to remove part of the string from one character to another in php

I have a URL string like
http://mydomain.com/status/statusPages/state/stack:3/my_link_id:1#state-9
I want to remove my_link_id:1 from this string. I know I can use any string replace function like
$goodUrl = str_replace('my_link_id:1', '', $badUrl);
But the problem is, the integer part is dynamic. I mean in my_link_id:1 the 1 is dynamic. It is the ID of the link and it can be from 0 to any number. So I want to remove my_link_id:along with any dynamic number from the string.
What I think I should remove part of the string from last / to #. But how can I do that?
you can use regular expressions:
$goodUrl = preg_replace('/(my_link_id:[0-9]+)/ig', '', $badUrl);
You can use preg_replace() php function
http://in1.php.net/preg_replace
CODE:
<?php $string = "http://mydomain.com/status/statusPages/state/stack:3/my_link_id:1#state-9";
echo $result = preg_replace('/(my_link_id:[0-9]+)/si', '', $string);
?>
Output :
http://mydomain.com/status/statusPages/state/stack:3/#state-9
May following help you
$strUrl = "http://mydomain.com/status/statusPages/state/stack:3/my_link_id:1#state-9";
$finalUrl = preg_replace('/(my_link_id:[0-9]+)/i', '', $strUrl);
echo $finalUrl;
and If you want remove also last / and # you follow this code
$strUrl = "http://mydomain.com/status/statusPages/state/stack:3/my_link_id:1#state-9";
$finalUrl = preg_replace('/(\/my_link_id:[0-9]+#)/i', '', $strUrl);
echo $finalUrl;

PHP - regex to allow numbers and symbols only

Hi i am tying to get clean date but there is some thing wrong.
Here is my code.
$in = 'Kb 06/11/2001';
$result = preg_replace("/[^0-9]+/", "", $in);
echo $result;
Output is
06112001
i need output 06/11/2001
Match the slash as well to get the clean date /[^0-9\/]+/
$result = preg_replace("/[^0-9\/]+/", "", $in);
You could also make use of simple array functions in PHP. [A regex alternative]
<?php
$in = 'Kb 06/11/2001';
echo $arr= array_pop(explode(' ',$in)); //"prints" 06/11/2001
Demo
The code explodes your text by space and then pops your last element which is your date.

Remove string starting with something

How can I do the following with php?
This is my example:
http://www.example.com/index.php?&xx=okok&yy=no&bb=525252
I want remove this part: &yy=no&bb=525252
I just want this result:
http://www.example.com/index.php?&xx=okok
I tried this :
$str = 'bla_string_bla_bla_bla';
echo preg_replace('/bla_/', '', $str, 1); ;
but this not what I want.
Going for preg_replace was a good start. But you need to learn about regexes.
This will work:
$str = 'http://www.example.com/index.php?&xx=okok&yy=no&bb=525252';
echo preg_replace ('/&yy.+$/', '', $str);
Here the regex is &yy.+$
Let's see how this works:
&yy matches &yy obviously
.+ matches everything ...
$ ... until the end of the string.
So here, my replacement says : Replace whatever begins by &yy until the end of the string by nothing, which is actually simply deleting this part.
You can do this:
$a = 'http://www.example.com/index.php?&xx=okok&yy=no&bb=525252';
$b = substr($a,0,strpos($a,'&yy')); // Set in '&yy' the string to identify the beginning of the string to remove
echo $b; // Will print http://www.example.com/index.php?&xx=okok
Are you always expecting the end part to have the 'yy' variable name? You could try this:
$str = 'http://www.example.com/index.php?&xx=okok&yy=no&bb=525252';
$ex = explode('&yy=', $str, 2);
$firstPart = $ex[0];

PHP - strip URL to get tag name

I need to strip a URL using PHP to add a class to a link if it matches.
The URL would look like this:
http://domain.com/tag/tagname/
How can I strip the URL so I'm only left with "tagname"?
So basically it takes out the final "/" and the start "http://domain.com/tag/"
For your URL
http://domain.com/tag/tagname/
The PHP function to get "tagname" is called basename():
echo basename('http://domain.com/tag/tagname/'); # tagname
combine some substring and some position finding after you take the last character off the string. use substr and pass in the index of the last '/' in your URL, assuming you remove the trailing '/' first.
As an alternative to the substring based answers, you could also use a regular expression, using preg_split to split the string:
<?php
$ptn = "/\//";
$str = "http://domain.com/tag/tagname/";
$result = preg_split($ptn, $str);
$tagname = $result[count($result)-2];
echo($tagname);
?>
(The reason for the -2 is because due to the ending /, the final element of the array will be a blank entry.)
And as an alternate to that, you could also use preg_match_all:
<?php
$ptn = "/[a-z]+/";
$str = "http://domain.com/tag/tagname/";
preg_match_all($ptn, $str, $matches);
$tagname = $matches[count($matches)-1];
echo($tagname);
?>
Many thanks to all, this code works for me:
$ptn = "/\//";
$str = "http://domain.com/tag/tagname/";
$result = preg_split($ptn, $str);
$tagname = $result[count($result)-2];
echo($tagname);

Categories