【问题标题】:preg_replace() only replace spaces, symbols with a hyphenpreg_replace() 仅用连字符替换空格、符号
【发布时间】:2014-04-07 11:45:53
【问题描述】:

除了字母和数字之外,我如何用连字符替换任何内容?这适用于一个 slug URL,人们可以在其中键入他们想要的 URL 字符串。我遇到的问题是人们输入了符号和许多空格,导致 URL 无效。

另外,什么是测试这个的好资源,这样我就不必再问了?谢谢。

【问题讨论】:

  • 不会 urlencode 只是用加号替换空格吗?我不确定它会对符号做什么
  • 会的。您在问题中描述的问题是“人们输入符号和许多空格导致 url 无效”。 urlencode 将使任何输入成为有效的 url

标签: php regex preg-replace


【解决方案1】:

代码

$input_url = "This is only an example: do you like it?";
$slug_url = preg_replace("/[^a-zA-Z0-9]/", "-", $input_url);
print($slug_url);

会输出

This-is-only-an-example--do-you-like-it-

DEMO

【讨论】:

  • 所以它只接受字母和数字,对吧?其他任何东西都被替换为连字符
  • 没错。正则表达式"/[a-zA-Z0-9]/" 匹配字母或数字。另一方面,由于插入符号否定字符类,正则表达式"/[^a-zA-Z0-9]/" 匹配除字母或数字之外的任何字符。这里函数preg_replace 匹配变量$input_url 中此类非字母数字字符的每个实例,并用连字符替换它。这个替换的结果存储在变量$slug_url中。
  • www.my_beautiful.url.whatever 怎么样?它会变成www-my-beautiful-url-whatever
猜你喜欢
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多