开发者

In PHP, regular expression to remove the pound sign from a string, if exists

In PHP, I want to remove the pound sign (#) from a hex string if it exists.

I tried the following:

$str = "#F16AD3开发者_JAVA百科";

//Match the pound sign in the beginning
if (preg_match("/^\#/", $str)) {
  //If it's there, remove it
  preg_replace('/^\#/', '', $str);
};

print $str;

But it didn't work. It prints out #F16AD3

How can I remove the pound only if it exists?


echo ltrim('#F16AD3', '#');

http://php.net/manual/en/function.ltrim.php

EDIT: If you are only testing for the pound sign at the beginning of the string you can can use strpos:

if(strpos('#F16AD3', '#') === 0) {
    // found it
}


You have to assign the response back to the variable:

$str = preg_replace('/^\#/', '', $str);

Also, you don't need to do the check with preg_match at all, it's redundant.


If you're just looking for a pound sign at the beginning of a string, why not use something simpler than regular expressions?

if ($str[0] == '#')
  $str = substr($str, 1);


The reason you are not seeing a change is because you are discarding the result of preg_replace. You need to assign it back to the variable:

//Match the pound sign in the beginning
if (preg_match("/^#/", $str)){
    //If it's there, remove it
    $str = preg_replace('/^#/', '', $str);
};

However, notice that the call to preg_match is completely redundant. You are already checking if it exists in preg_replace! :) Therefore, just do this:

//If there is a pound sign at the beginning, remove it
$str = preg_replace('/^#/', '', $str);


@ennuikiller is correct, no escaping necessary. Also, you don't need to check for a match, just replace it:

<?php
$color = "#ff0000";

$color = preg_replace("/^#/", "", $color);
echo $color;

?>

OUTPUT

ff0000


Why using preg_replace for this?

echo str_replace("#","",$color);


You're calling two different preg functions, this might be over-optimization, but str_replace('#' , '' , $color) solves your problem faster/efficiently. I'm sure other people will answer your specific regex issue.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜