获取字符串的前导部分并转换为短横线大小写

发布于 2024-08-31 05:04:05 字数 1195 浏览 11 评论 0原文

我正在尝试将标题数据更改为 URL。我需要从 $title 获得的以下动态数据中删除从“截止日期”开始的所有文本:

示例:

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

我预计结果应该是这样的:

  • new-york
  • new-hampshire
  • new-jersey

这是我尝试过的代码

$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);

不幸的是,结果是:

  • new-york-deadline-may-14th-2010-urgent
  • new -hampshire-deadline-may-19th-2010
  • 新泽西州-

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( '"' ,'!' ,'@' ,'#' ,'

Unfortunately, the results are:

  • new-york-deadline-may-14th-2010-urgent
  • new-hampshire-deadline-may-19th-2010
  • new-jersey-
,'%' ,'^' ,'&' ,'*' ,'(' ,')' ,'+' ,'{' ,'}' ,'|' ,':' ,'"' ,'<' ,'>' ,'?' ,'[' ,']' ,'' ,';' ,"'" ,',' ,'.' ,'_' ,'/' ,'*' ,'+' ,'~' ,'`' ,'=' ,' ' ,'---' ,'--','--'); $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-

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

旧城烟雨 2024-09-07 05:04:05

您可以将 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

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
婴鹅 2024-09-07 05:04:05

这是一种非正则表达式的方式

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

Here's a non-regex way

$str = 'New York deadline May 14th, 2010 (urgent)';
$title = str_replace( ' ', '-', current( explode( ' deadline', $str ) ) );
淡淡離愁欲言轉身 2024-09-07 05:04:05

要从美国州引导 inout 字符串中生成所需的 kebab-case 字符串:

  1. 隔离空格和“截止日期”之前的子字符串,
  2. 将所有空格转换为连字符,然后
  3. 将所有字母转换为小写

代码:(Demo)

echo strtolower(
         strtr(
             strstr($str, ' deadline', true),
             ' ',
             '-'
         )
     );

如果您的输入可能包含连续的空格、连字符或其他符号,则实现将需要更复杂的处理

To produce the desired kebab-case string from your US state lead inout strings:

  1. Isolate the substring before the space and "deadline",
  2. Convert any spaces to hyphens, then
  3. Cast all letters to lowercase

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文