簡體   English   中英

如何從字符串中刪除前導字符?

[英]How to remove the leading character from a string?

我有一個輸入字符串,如:

$str = ':this is a applepie :) ';

如何刪除第一個出現的: with PHP?

所需的輸出: this is a applepie :)

substr()函數可能會在這里幫助你:

 $str = substr($str, 1);

字符串從 0 開始索引,此函數的第二個參數采用 cutstart。 所以設為 1,第一個字符就消失了。

要從字符串的開頭刪除每個: ,您可以使用ltrim

$str = '::f:o:';
$str = ltrim($str, ':');
var_dump($str); //=> 'f:o:'

使用substr

$str = substr($str, 1); // this is a applepie :)

3個答案的執行時間:

通過更換大小寫刪除第一個字母

$str = "hello";
$str[0] = "";
// $str[0] = false;
// $str[0] = null;
// replaced by �, but ok for echo

0.39602184295654次測試的執行時間: 0.39602184295654


用 substr() 刪除第一個字母

$str = "hello";
$str = substr($str, 1);

5.153294801712次測試的執行時間: 5.153294801712


用 ltrim() 刪除第一個字母

$str = "hello";
$str= ltrim ($str,'h');

5.2393000125885次測試的執行時間: 5.2393000125885


使用 preg_replace() 刪除第一個字母

$str = "hello";
$str = preg_replace('/^./', '', $str);

6.8543920516968次測試的執行時間: 6.8543920516968

這是代碼

$str = substr($str, 1); 

echo $str;

輸出:

this is a applepie :)

接受的答案:

$str = ltrim($str, ':');

有效,但會刪除多個:當開始時有多個。

$str = substr($str, 1);

將從頭開始刪除任何字符。

然而,

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

完美地工作。

$str = substr($str, 1);

參見PHP 手冊示例 3

echo substr('abcdef', 1);     // bcdef

注意:

unset($str[0]) 

將不起作用,因為您無法取消設置字符串的一部分:-

Fatal error: Cannot unset string offsets

更新

經過進一步的測試,我不建議再使用它。 在 MySQL 查詢中使用更新的字符串時,它給我帶來了問題,更改為substr解決了問題。 我想刪除這個答案,但評論表明它以某種方式更快,所以有人可能會使用它。 您可能會發現修剪更新的字符串可以解決字符串長度問題。


有時你不需要一個函數:

$str[0] = '';

例如:

$str = 'AHello';
$str[0] = '';
echo $str; // 'Hello'

此方法修改現有字符串而不是創建另一個字符串。

你可以使用sbstr()函數

$amount = 1;   //where $amount the the amount of string you want to delete starting  from index 0
$str = substr($str, $amount);

要在PHP中刪除字符串的第一個字符,

$string = "abcdef";     
$new_string = substr($string, 1);

echo $new_string;
Generates: "bcdef"

使用 mb_substr 函數

    mb_substr("我abc", 1);

從字符串的開頭和結尾開始修剪數組中每個單詞的出現 + 空格和可選的額外單個字符,按照正常的 trim()

<?php
function trim_words($what, $words, $char_list = '') {
    if(!is_array($words)) return false;
    $char_list .= " \t\n\r\0\x0B"; // default trim chars
    $pattern = "(".implode("|", array_map('preg_quote', $words)).")\b";
    $str = trim(preg_replace('~'.$pattern.'$~i', '', preg_replace('~^'.$pattern.'~i', '', trim($what, $char_list))), $char_list);
    return $str;
}

// for example:
$trim_list = array('AND', 'OR');

$what = ' OR x = 1 AND b = 2 AND ';
print_r(trim_words($what, $trim_list)); // => "x = 1 AND b = 2"

$what = ' ORDER BY x DESC, b ASC, ';
print_r(trim_words($what, $trim_list, ',')); // => "ORDER BY x DESC, b ASC"
?>

該代碼對我來說效果很好。

$str = substr($str ,-(strlen($str)-1));

也許,也貢獻答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM