Reputation: 11
I am trying to change title data into URL. I need to get rid off all text starting from "deadline" from the following dynamic data which I get from $title:
Examples:
New York deadline May 14th, 2010 (urgent)
New Hampshire deadline May 19th, 2010
New Jersey deadline
I expect the results should be like this:
new-york
new-hampshire
new-jersey
Here is the code I have tried
$newurl = strip_tags(str_replace("deadline","","$title"));
$code_entities_match = array( '"' ,'!' ,'@' ,'#' ,'$' ,'%' ,'^' ,'&' ,'*' ,'(' ,')' ,'+' ,'{' ,'}' ,'|' ,':' ,'"' ,'<' ,'>' ,'?' ,'[' ,']' ,'' ,';' ,"'" ,',' ,'.' ,'_' ,'/' ,'*' ,'+' ,'~' ,'`' ,'=' ,' ' ,'---' ,'--','--');
$code_entities_replace = array('' ,'-' ,'-' ,'' ,'' ,'' ,'-' ,'-' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'-' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'-' ,'' ,'-' ,'-' ,'' ,'' ,'' ,'' ,'' ,'-' ,'-' ,'-','-');
$newtitle = str_replace($code_entities_match, $code_entities_replace, $newurl);
$urltitle = strtolower($newtitle);
Unfortunately, the results are:
new-york-deadline-may-14th-2010-urgent
new-hampshire-deadline-may-19th-2010
new-jersey-
Upvotes: 1
Views: 398
Reputation: 47874
To produce the desired kebab-case string from your US state lead inout strings:
Code: (Demo)
echo strtolower(
strtr(
strstr($str, ' deadline', true),
' ',
'-'
)
);
If your input might contain consecutive spaces, hyphens, or other symbols, the implementation would need more intricate handling
Upvotes: 0
Reputation: 30170
Here's a non-regex way
$str = 'New York deadline May 14th, 2010 (urgent)';
$title = str_replace( ' ', '-', current( explode( ' deadline', $str ) ) );
Upvotes: 2
Reputation: 454950
You can use preg_replace as:
$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
Upvotes: 2