2016-03-02 3 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... 

    } 
} 

Так функция в данный момент просто проверяет, является ли слово «Дополнительно:» присутствует, в этом случае я бы хотел повторить «Sennheiser 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]; 
    } 

выход «Se 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

yep sorry моя ошибка, check edit – 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) 

есть проблема. более простой способ сделать это, но он работает, если вы всегда ищете то, что после «Дополнительно»: strpos() возвращает int.

Смежные вопросы