下面是一些例子。我需要的是移除特定线路中的定时部分。例如:
欧足联联播节目上午8时至上午10时
我只需要:
欧足联联播
我是新来的。有人能指点我吗。
下面是我正在使用的一些示例字符串:
发布于 2013-03-14 11:32:35
<?php
$str = array("Uefa Europa League Simulcast 8.00am-10.00Am",
"MLB: Chicago White Sox at Los Angeles Angels 8.00PM-11.00AM",
"MLB Spring: Chicago Cubs at Los Angeles Dodgers 8.00aM-11.00PM",
"Live Test Cricket New Zealand v England: Second Test Day Two 9:00am-5:00am",
"UEFA Europa League Hightlights 10.00pm-11.00pm");
foreach ($str as $s) {
$new = preg_replace('/\s*\d?\d[\.\:]\d\d[ap]m-\d?\d[\.\:]\d\d[ap]m\s*$/i', '', $s);
echo "$new\n";
}输出
Uefa Europa League Simulcast
MLB: Chicago White Sox at Los Angeles Angels
MLB Spring: Chicago Cubs at Los Angeles Dodgers
Live Test Cricket New Zealand v England: Second Test Day Two
UEFA Europa League Hightlights对/\s*\d?\d[\.\:]\d\d[ap]m-\d?\d[\.\:]\d\d[ap]m\s*$/i的解释
\s*意味着零或多个空白空间\d?指的是一位或零位\d是指一个数字[\.\:]的意思是.或:[ap]的意思是a或p$表示字符串的结尾/.../i表示不区分大小写发布于 2013-03-14 11:38:20
不需要正则表达式-您只需在最后一个空格修剪字符串:
<?php
$str = array(
"Uefa Europa League Simulcast 8.00am-10.00Am",
"MLB: Chicago White Sox at Los Angeles Angels 8.00PM-11.00AM",
"MLB Spring: Chicago Cubs at Los Angeles Dodgers 8.00aM-11.00PM",
"Live Test Cricket New Zealand v England: Second Test Day Two 9:00am-5:00am",
"UEFA Europa League Hightlights 10.00pm-11.00pm"
);
foreach ($str as $s) {
$trimmed = substr($s, 0, strrpos($s, ' '));
echo "$trimmed\n";
}
?>发布于 2013-03-14 11:38:35
正则表达式只匹配正则字符串,因此让我们分解您提供的示例字符串,并寻找一些规律性:
8.00am-10.00Am
8.00PM-11.00AM
8.00PM-11.00AM
8.00PM-11.00AM
10.00pm-11.00pm所以我可以看到:
\d{1,2}.或冒号:。这可以表示为[.:]\d{2}AM或PM,大小写不敏感。为了使用不区分大小写的方法,我们可以对整个模式使用i修饰符,因此我们只需要匹配am或pm,即编写成(am|pm)。这将表现为一个捕获组,我们不需要捕获,因此我们可以使用非捕获组(?:am|pm)优化表达式。-,这可以用字面来表达。所以,当我们把它们放在一起的时候,我们会得到:
/\d{1,2}[.:]\d{2}(?:am|pm)-\d{1,2}[.:]\d{2}(?:am|pm)/i但是等等..。这将在主题字符串的末尾留下尾随空格。好的,我们只需要关闭trim(),但是我们也可以获得正则表达式来处理这个问题,方法是将\s*放在模式的前面。
/\s*\d{1,2}[.:]\d{2}(?:am|pm)-\d{1,2}[.:]\d{2}(?:am|pm)/i所以现在我们只需要用一个空字符串替换任何匹配这个模式的东西。您可以使用preg_replace()在PHP中完成此操作。
$pattern = '/\s*\d{1,2}[.:]\d{2}(?:am|pm)-\d{1,2}[.:]\d{2}(?:am|pm)/i';
$string = 'Uefa Europa League Simulcast 8.00am-10.00Am';
$string = preg_replace($pattern, '', $string);
var_dump($string);看到它起作用
https://stackoverflow.com/questions/15407894
复制相似问题