извлечение различных частей строки в php - PullRequest
1 голос
/ 15 марта 2011

У меня есть веб-сайт, название которого всех его историй выглядит так:

new job alert from chicago {latest reservation : 3/5/2011}
new job alert from NY {latest reservation : 3/4/2011}
new job alert from LA {latest reservation : 3/3/2011}

теперь в php мне нужно извлечь последнюю часть бронирования

$atest_reservation = ?

$story_title_without_reservation_date = ?

я пробовал такие функции, как strstr () или preg_replace (), но не смог достичь своей цели

спасибо

Ответы [ 5 ]

3 голосов
/ 15 марта 2011
$str = 'new job alert from LA {latest reservation : 3/3/2011}';

preg_match('/^(.*) \{latest reservation : ([^\}]*)\}$/', $str, $matches);

list(,$story_title_without_reservation_date, $latest_reservation) = $matches;

// $story_title_without_reservation_date = "new job alert from LA"
// $latest_reservation = "3/3/2011"
1 голос
/ 15 марта 2011

Легко, сделайте это:

$entry = "new job alert from chicago {latest reservation : 3/5/2011}"

$string = explode("{", $entry);
echo $string[0]; // new job alert from chicago 
echo $string[1]; // latest reservation : 3/5/2011}

Затем очистите его, как хотите.

1 голос
/ 15 марта 2011

Попробуйте

substr ( string $string , int $start [, int $length ] )

Чтобы получить первые 16 символов, это будет

substr ($string , 0, 15 )

Поэтому попытайтесь сохранить все строки, которые у вас есть, в переменных или в массиве и получите любую нужную вам часть с этим.

Если у вас есть какие-либо сомнения, прокомментируйте ниже, пожалуйста:)

0 голосов
/ 15 марта 2011

Другой вариант - использовать sscanf().

sscanf(
    $title,
    '%[^{]{latest reservation : %[0-9/]}',
    $story_title_without_reservation_date,
    $latest_reservation
);
0 голосов
/ 15 марта 2011

Я не совсем уверен, какие части вы пытаетесь извлечь в определенных, но следующие должны работать:

preg_match_all("/new (.*) from (.*) {latest reservation : (.*)}/", $data, $matches)

Это будет соответствовать (если я правильно прочитал) названию оповещения о вакансии, городу и дате из оповещений. Это будет соответствовать всем им, но если вы делаете эту строку построчно, вы можете использовать стандарт preg_match вместо preg_match_all.

...