我正在尝试创建一个PHP正则表达式preg_replace,以便删除特定字符串后的所有内容。让我说我有一篇文章,并且在每篇文章的最后都有一个特定的单词模式,文章总是结束。如下。
输入字符串:
Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Cras vestibulum pellentesque egestas。 Sed quis velit eros。 Phasellus vitae,euismod lectus nec,auctor libero。在venenatis sapien id nunc varius vehicula./Site.com/ Risus mt 12/04/2015,ora 20:56 标签:sapien lectus kalon fames laoreet
期望的输出:
Lorem ipsum dolor坐下来,精神上的精神。 Cras vestibulum pellentesque egestas。 Sed quis velit eros。 Phasellus vitae,euismod lectus nec,auctor libero。在venenatis sapien id nunc varius vehicula ./Site.com/
因此我想删除模式和输入字符串中的模式之后的所有内容,以粗体显示。 “Risusm®12/ 04/2015,ora 20:56 ”因为它始终是相同的,并遵循日期和时间,数字格式。
我正在尝试执行类似下面的代码,但是我无法构建正则表达式而不会出现错误,因为我不确定所需模式的正确语法。
$desired_string = preg_replace('\^Risus m.\s\d\d\D\d\d\D\d\d\d\d\\D\s(ora)','',$string);
谢谢!
答案 0 :(得分:1)
如果您希望使用正则表达式删除文本中标记之后的内容,则需要使用.*?
。所以,你可以使用这样的东西:
\s*Risus\s+m.\s+\d{2}\D\d{2}\D\d+,\s+ora.*$
PHP代码:
$re = "/\\s*Risus\\s+m.\\s+\\d{2}\\D\\d{2}\\D\\d+,\\s+ora.*$/";
$str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vestibulum pellentesque egestas. Sed quis velit eros. Phasellus vitae, euismod lectus nec, auctor libero. In venenatis sapien id nunc varius vehicula./Site.com/ Risus mt 12/04/2015, ora 20:56 Tags: sapien lectus kalon fames laoreet";
$result = preg_replace($re, "", $str);
请参阅demo。