2016-03-02 218 views
0

我想从另一个字符串中提取字符串,但我唯一能看到的是substr(),当我的字符串长度不同时使用整数。如何从另一个字符串中提取字符串php

看看字符串,我有一堆这些我想提取和回声额外只有当他们存在。我怎样才能用PHP做到这一点。多谢你们。

$string = 'Apple iPhone 6 Plus (Refurbished 16GB Silver) on EE Regular 2GB (24 Month(s) contract) with UNLIMITED mins; UNLIMITED texts; 2000MB of 4G data. £37.49 a month. Extras: Sennheiser CX 2.00i (Black)'; 

function freegifts($string) { 
    if (strpos($string, 'Extras:') !== false { 

     extract extras... 

    } 
} 

所以此刻的功能只是检查是否字“附加:”存在,在这种情况下,我只是想呼应“森海塞尔CX 2.00i(黑色)”

+1

在这里最好使用正则表达式。 (?<=额外:)。* – Juakali92

+0

对不起,我不明白? – Scott

+0

你可以返回strpos到一个字符串,然后使用substr开始7? – lciamp

回答

2

正则表达式是一个很好的主意,另一种是普通的老爆炸:

$string = 'Apple iPhone 6 Plus (Refurbished 16GB Silver) on EE Regular 2GB (24 Month(s) contract) with UNLIMITED mins; UNLIMITED texts; 2000MB of 4G data. £37.49 a month. Extras: Sennheiser CX 2.00i (Black)'; 

    $x=explode('Extras:',$string); 

    if(!empty($x[1])){ 
    echo $x[1]; 
    } 

输出“硒nnheiser CX 2.00i(黑色)“

+0

这个作品,我从来没有用过之前爆炸感谢:D – Scott

0

试试这个:

if (preg_match("(?<=Extras:).*", $string, $matches)) { 
    print_r($matches); 
} else { 
    echo "A match was not found."; 
} 
+0

我想回应什么发现 – Scott

+0

对不起,我的错,检查编辑 – Juakali92

0
$string = 'Apple iPhone 6 Plus (Refurbished 16GB Silver) on EE Regular 2GB (24 Month(s) contract) with UNLIMITED mins; UNLIMITED texts; 2000MB of 4G data. £37.49 a month. Extras: Sennheiser CX 2.00i (Black)'; 

// 'Extras:' is 7 chars 
$extras = substr($string, strpos($string, 'Extras:') + 7); 

echo $extras; 

OUTPUT: Sennheiser CX 2.00i (Black) 

有问题。一个更简单的方法来做到这一点,但它的工作原理,如果你总是寻找'Extras:'strpos()返回一个int。