【发布时间】:2010-02-08 10:49:33
【问题描述】:
我有这个:
15_some_text_or_numbers;
我想得到第一个下划线前面的内容。 第一个下划线后面总是有一个字母。
示例:
14_hello_world = 14
结果是数字 14!
谢谢
【问题讨论】:
标签: php
我有这个:
15_some_text_or_numbers;
我想得到第一个下划线前面的内容。 第一个下划线后面总是有一个字母。
示例:
14_hello_world = 14
结果是数字 14!
谢谢
【问题讨论】:
标签: php
如果前面有总是一个数字,可以使用
echo (int) '14_hello_world';
查看String conversion to integers in the PHP manual上的条目
这是一个没有类型转换的版本:
$str = '14_hello_1world_12';
echo substr($str, 0, strpos($str, '_'));
请注意,如果没有找到下划线,这将不返回任何内容。如果找到,返回值将是一个字符串,而类型转换的结果将是一个整数(这并不重要)。如果您希望在不存在下划线时返回整个字符串,可以使用
$str = '14_hello_1world_12';
echo str_replace(strstr($str, '_'), '', $str);
从 PHP5.3 开始,您还可以使用 strstr 并将 $before_needle 设置为 true
echo strstr('14_hello_1world_12', '_', true);
注意:由于 PHP 中从字符串到整数的类型转换遵循定义明确且可预测的行为,并且此行为遵循 Unix 自己的 strtod 混合字符串规则,我不明白第一种方法如何滥用类型转换。
【讨论】:
preg_match('/^(\d+)/', $yourString, $matches);
$matches[1] 将保留您的价值
【讨论】:
[1]?我会说是[0]
[0] 将保存整个匹配的字符串,而 [1] 将具有第一组值(括号)
比正则表达式更简单:
$x = '14_hello_world';
$split = explode('_', $x);
echo $split[0];
输出 14。
【讨论】: