str_replace问题

时间:2010-05-02 14:27:02

标签: php

我正在尝试将标题数据更改为网址。我需要从以下动态数据中从“截止日期”开始删除所有文本,这些数据来自$ title:

纽约截止日期2010年5月14日(紧急)
新罕布什尔州截止日期2010年5月19日
新泽西截止日期

我希望结果应该是这样的 新约克
新汉普郡
新泽西

这是我试过的代码

$newurl = strip_tags(str_replace("deadline","","$title"));
$code_entities_match = array( '&quot;' ,'!' ,'@' ,'#' ,'$' ,'%' ,'^' ,'&' ,'*' ,'(' ,')' ,'+' ,'{' ,'}' ,'|' ,':' ,'"' ,'<' ,'>' ,'?' ,'[' ,']' ,'' ,';' ,"'" ,',' ,'.' ,'_' ,'/' ,'*' ,'+' ,'~' ,'`' ,'=' ,' ' ,'---' ,'--','--');
$code_entities_replace = array('' ,'-' ,'-' ,'' ,'' ,'' ,'-' ,'-' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'-' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'-' ,'' ,'-' ,'-' ,'' ,'' ,'' ,'' ,'' ,'-' ,'-' ,'-','-');
$newtitle = str_replace($code_entities_match, $code_entities_replace, $newurl);
$urltitle = strtolower($newtitle);

不幸的是,结果是:
新纽约的最后期限-MAY-14-2010紧急
新汉普郡截止日-MAY-19 2010
新泽西 -

任何人都可以提供帮助吗?

2 个答案:

答案 0 :(得分:2)

您可以将preg_replace用作:

$str = 'New York deadline May 14th, 2010 (urgent)';

$to = array('/deadline.*/','/^\s+|\s+$/','/\s+/');
$from = array('','','-');
$str = strtolower(preg_replace($to,$from,$str));

echo $str; // prints new-york

答案 1 :(得分:2)

这是一种非正则表达方式

$str = 'New York deadline May 14th, 2010 (urgent)';
$title = str_replace( ' ', '-', current( explode( ' deadline', $str ) ) );