【问题标题】:How to use preg_replace function for post_name in wordpress?如何在 wordpress 中为 post_name 使用 preg_replace 函数?
【发布时间】:2016-08-02 10:33:19
【问题描述】:
$post_name = strtolower(preg_replace('/[^a-z0-9]+/i', '-', $post_title));

当我在帖子标题末尾放置空格或 ) 时,此代码会出错。 如何解决这个问题? '/[^a-z0-9]+/i' 是什么意思?

谢谢。

【问题讨论】:

  • 让我们从另一端开始吧。你想允许什么作为标题?任何事物?或者有什么限制?
  • 在这里您可以看到 preg_replace 的运行情况phpliveregex.com/p/fiJ(先按下 preg_replace 按钮)。该函数将除 a-z 和 0-9 之外的所有字符替换为“-”。我认为是 strtolower() 造成了错误,而不是 preg_replace。如上所述,只需告诉我们您想要发生的事情,我或其他人会帮助您。
  • 地球在呼唤,请接听。
  • 让帖子标题如下“这是我的文章(第 1 部分)”我想成为 this-is-my-article-part-1 所以我想删除 () 和空格。我想成为 this-is-my-article-part-1

标签: url preg-replace


【解决方案1】:

好的..
试试这个:

$string = trim(strtolower("This is my article (part 1) "));
$string = preg_replace("/[^a-z0-9]+/i", "-", $string);
$string = preg_replace("/-$/", "", $string);

正如我在评论中所写,我认为问题出在 strtolower() 上,它试图将“-”变为小写,但它不起作用。 因此,首先将普通字母设为小写,然后使用 pregreplace 来制作 ) a -。 然后第二个 pregreplace 删除最后一个 - 如果它在那里。

前两行可能是:

$string = preg_replace("/[^a-z0-9]+/i", "-", trim(strtolower("This is my article (part 1) ")));

但我想说清楚,代码的每一步

【讨论】:

  • $string = strtolower(" 这是我的文章(第 1 部分)");我想删除 - 在开头
  • 你的意思是开头的空格变成了“-”?好的,尝试使用 trim($string);先于一切。
  • @kostjakarta.com 没问题。如果有效,请接受答案。如果有任何其他问题,我会尽力帮助您。
  • 我现在面临的问题,我找不到按钮来接受你的回答。我环顾四周:)
猜你喜欢
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 2013-11-29
  • 2012-10-10
相关资源
最近更新 更多