PHP preg_match用于过滤发布商标题标题

时间:2013-12-04 04:01:35

标签: php regex preg-match space

我想从长标题中检索发布者字符串。

- THE TRIBUNE-JOURNAL (Johnstown, Pa.) - The 5 Best Places To Live If You Hate Winter

我试过了preg_match(' /-(.*?)-/ ', $publisher_title, $pub_dashed);

它输出: - THE TRIBUNE- [bad]

它应该是: - TRIBUNE-JOURNAL(宾夕法尼亚州约翰斯敦) - [good]

请注意,发布商大部分时间没有破折号,

例如: - 路透社 - 2013年最佳年度相机奖

它输出: - 路透社 - [好]

2 个答案:

答案 0 :(得分:0)

preg_match('/\A- (.+?) - /', $publisher_title, $pub_dashed);

答案 1 :(得分:0)

选项1: /- (.+?) -[^-]*$/

捕获此字符串: - THE TRIBUNE - JOURNAL (Johnstown, Pa.) - The 5 Best Places To Live If You Hate Winter

它返回匹配1 THE TRIBUNE - JOURNAL (Johnstown, Pa.)

它的工作原理是找到最后一个非连字符并删除它。它也适用于您在TRIBUNE-JOURNAL之间有 no 空格的原始示例。

工作示例:http://regex101.com/r/cL2bB7

警告:如果标题中有破折号,那就不会起作用。

选项2:

如果发布者总是大写,您可以使用/- ([A-Z\s\-]+\s\(.*?\))/,它将查找所有大写字母,空格或短划线,然后是括在括号中的文字()。