2013-10-16 70 views
0

我正在申请从哪里收到用户的字符串。字符串与它们之间的 - 字符连接。字符串的第一部分包含字母数据,而后面的部分包含整数或浮点数。例如:一个字符串可能是3杯Tea-5.99。我想要得到由 - 字符分隔的字符串5.99的后面部分。怎么做?我知道PHP的substr()函数,但它需要固定的字符来检索子字符串。但在这种情况下,后面的部分不会被修复。例如:2个牛仔裤-65.99。在这种情况下,我需要最后4个字符,这意味着我不能使用substr()函数。 有人解答? 我知道我需要申请正则表达式,但我完全是新手在正则表达式。 等待你的帮助。 谢谢!如何从PHP的末尾获取字符串的一部分?

+0

请停下来思考你在做什么。你确定用'-'分隔的字符串是你工作的最佳工具吗?如果你得到像'3 kit-kat tablet-12.00'这样的字符串呢?你有没有听说过JSON? –

+0

是的。你是对的,如果这是我想的,那就是为什么我要求我从最后到第一次出现“ - ”的地方采取字符串。听说过JSON,但我仅限于PHP。如果用户输入3个kit-kat片剂-12.00,那么解决方案是什么? – Hammad

+0

JSON并不仅限于JavaScript。它在PHP中也有很多用处,这就是为什么我们有'json_encode()'和'json_decode()'。另外,用户必须手动输入'3 kit-kat tablet-12.00'的设计是一个糟糕的设计。您需要有3个不同的输入字段(数量,产品和价格),然后通过表单发送。然后,HTTP将正确处理这些值的传输,并且不需要执行任何字符串操作。 –

回答

3

只需

$result = explode('-', $string)[1]; 

对于PHP < 5.4,你将不得不使用临时变量:

$data = explode('-', $string); 
$result = $data[1]; 

编辑

正如评论所说,如果有超过1部分,那将是:

$result = array_pop(explode('-', $string)); 
+0

不确定这会工作。爆炸首先使用分隔符,afaik ..? –

+0

这就是关于乱七八糟/爆炸的问题..谢谢(第一个接受任何顺序的参数) –

+3

如果输入可以包含多个短划线,则使用end()而不是将其硬编码到第二部分。 – Darsstar

1
$bits = explode('-', $inputstring); 
echo $bits[1]; 
1

您可以使用substr()strpos()

$str = '3 Cups Tea-5.99'; 
echo substr($str, strpos($str, "-") + 1); 

输出:

5.99 

Demo!

+0

非常感谢! – Hammad

+0

@ user2885137:不用担心:) –

0

如果数据将是这样的: “1杯茶2.99” ,那么

$data = "1-Cup tea-2.99"; 
$data = explode('-', $string); 
$result = $data[count($data)-1]; 
相关问题