在php中提取字符串的不同部分

时间:2011-03-15 19:56:23

标签: php string strip

我有一个网站,其所有故事的标题都是这样的:

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 个答案:

答案 0 :(得分:3)

$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 :(得分:1)

尝试

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

为了获得前16个字符,它将是

substr ($string , 0, 15 )

因此,请尝试保存变量或数组中的所有字符串,并使用此功能获取所需的任何部分。

如果您有任何疑问,请在下面发表评论:)

答案 2 :(得分:1)

很简单,这样做:

$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}

然后根据需要清理它。

答案 3 :(得分:0)

我不确定您要尝试提取的具体部分,但以下情况应该有效:

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

这将匹配(如果我正确读取)作业警报名称,城市和警报中的日期。它会匹配所有这些内容,但如果您逐行执行此操作,则可以使用标准preg_match代替preg_match_all

答案 4 :(得分:0)

另一种选择是使用sscanf()

sscanf(
    $title,
    '%[^{]{latest reservation : %[0-9/]}',
    $story_title_without_reservation_date,
    $latest_reservation
);