2016-05-18 91 views
0

我儘量隱蔽正常英文文本到URL路徑。PHP:將英文普通文本到URL

例如

  • this is a text! - >this-is-a-text
  • this is a text&image - >this-is-a-text-image
  • are you ok? - >are-you-ok

所以我試圖用這個代碼把它轉換:

str_replace("-", "+", urlencode(trim($text))); 

這並不隱蔽+-

而且似乎沒有例如用於「/」和工作好「&」(對於某些字符串不到風度的工作。)

有更好的方法?

+7

http://stackoverflow.com/questions/2955251/php-function-to-make-slug-url-string –

回答

2

對於你的例子這應該工作:

$result = preg_replace('/[^a-z0-9]+/i', '-', $text); 

如果你想全部使用小寫然後用strtolower($text)代替,則沒有必要爲i修改。

+0

快速的typer,正是我在想什麼,這是它的一個101 https://regex101.com/R/vU1lP6/1。 – chris85

+1

'$結果=修剪(preg_replace函數( '/ [^一個-Z0-9] +/I', ' - ',用strtolower($文本)), ' - ');' - 添加'+'和'strtolower' ;修剪 – luchaninov

+0

@luchaninov:謝謝! – AbraCadaver

1

這個過程通常被稱爲「使塞」。 你可以找到各種準備好的功能。 關於考慮Unicode,函數可能更復雜。

但是,您的問題在這裏得到解答: PHP function to make slug (URL string)