【问题标题】:Cutting string by first number found按找到的第一个数字切割字符串
【发布时间】:2013-12-13 00:39:34
【问题描述】:

我必须在找到任何数字之前剪切字符串的第一部分。例如:

string: "BOBOSZ 27A lok.6" 应该被删减为 'BOBOSZ"

string: "aaa 43543" 应该被切割成 "aaa"

字符串:“aa2bhs2”应该被切割成“aa”

我正在尝试使用 preg_split 和 explode funcionts,但我现在无法得到正确的结果。

提前致谢!

【问题讨论】:

  • 为什么第一个和第二个字符串没有空格?
  • 是的,你说得对,应该删减为 'BOBOSZ' 和 'aaa',我会纠正我的问题

标签: php explode preg-split


【解决方案1】:

您可以将此模式与preg_match() 函数一起使用:

preg_match('/^[^0-9]+/', $str, $match);
print_r($match);

图案细节:

^         # anchor: start of the string
[^0-9]+   # negated character class: all that is not a digit one or more times

注意:如果您认为空字符串是有效结果,您可以将+ 替换为*

如果你绝对想使用preg_split() 函数,你可以这样做:

$result = preg_split('/(?=(?:[^0-9].*)?$)/s', $str);
echo $result[0];

【讨论】:

  • 使用后$answer = preg_split('/^[^0-9]+/', $adress[0]);我得到 "array (size=2) 0 => string '' (length=0) 1 => string '27A lok.6' (length=9)" 第一个字符串是空的,第二个字符串是第二部分,但我需要这第一部分...
  • @69punk:刷新页面。
  • 你是对的,preg_match 在这种情况下效果更好。谢谢;-)
【解决方案2】:
preg_match('#(\w+)\s?\d+#', $string, $match);

我记得你应该得到 $match[1] :)

【讨论】:

    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多