我究竟如何检查$value
中的第一个字符是£,然后将其删除?
更好的方法是检查它是否不是数字,然后将其删除。
我目前的代码:
echo '<dl style="margin-bottom: 1em;">';
foreach ($row as $key => $value)
{
echo "<dt>$key</dt><dd>$value</dd>";
}
echo '</dl>';
答案 0 :(得分:24)
有些人建议修剪 - 这对于大多数用途来说可能很好,但也可能会删除尾随的'£'。
如果您真的只想从字符串的开头删除“£”,则可能需要查看使用ltrim
e.g。
$value = ltrim($value, '£');
(我知道这个问题的意图是从字符串中剥离非数字,但我发现谷歌只是从一开始就删除一个字符,所以毫无疑问其他人也会这样。这应该有助于他们出)
答案 1 :(得分:13)
你知道有这个功能吗? http://php.net/manual/en/function.str-replace.php
str_replace('£', '', $value);
或当然
ltrim($value, '£')
如果你只想摆脱第一个角色
答案 2 :(得分:10)
您可以使用trim()
$value = trim($value, "£");
在您的代码中,您可以:
foreach($row as $key => $value){
echo "<dt>$key</dt><dd>".trim($value, "£")."</dd>" ;
}
答案 3 :(得分:9)
你可以这样做:
if (substr($value,0,1)=="£") $value = substr($value,1);
或
if ($value[0]=="£") $value = substr($value,1);
或(通过这种方式检查字符(从值减去)是否为数字)..
if (!is_numeric(substr($value,0,1))) $value = substr($value,1);
答案 4 :(得分:3)
您可以减去第一个字符并对其执行is_int()检查,如下所示:
$firstChar = substr($yourString, 0, 1);
if(!is_int($firstChar)) {
// Not an integer, strip the first character altogether
$newString = substr($yourString, 1);
}
然后,$ newString将保留内容,不包含第一个字符(如果不是整数)。
答案 5 :(得分:2)
$value = preg_replace('/^\\D*/', '', $value);
这将删除$value
答案 6 :(得分:1)
if ($values[0] == '£') { then
$values = substr($values, 1); // grab char 1 onwards, removing char 0/£
}
这使用“将字符串作为数组”快捷方式表示法,并归结为
if (substr($values, 0, 1) == '£') {
请注意,这将在多字节字符集上失败,您必须使用mb_substr()
代替,这是多字节感知版本。
答案 7 :(得分:0)
这可能对将来的访问者有用。
问题是要删除第一个字符(如果它是“£”)。
当然可以是任何字符,所以建议ltrim
的问题在于它将删除所有个连续字符,而不仅仅是第一个,例如
ltrim('££10', '£');
将输出10
而不是£10
。在这种情况下,这可能是可以接受的,但并非在每种情况下都可以接受,因为我们只想要第一个字符。
preg_replace('/^'.$char.'/', '', $input);
会这样做。 $char
是您要检查的字符(在这种情况下为'£')。
正则表达式/^£/
将查找完全固定在字符串开头的£实例。