我有一个网站,其所有故事的标题都是这样的:
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()这样的函数但是无法成功实现我的目标
谢谢
答案 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
);