adres çubuğu için bir dize 'url' dostu yapmak için herhangi özel bir php fonksiyon?

7 Cevap php

Böyle bir işlevi var mı?

Eğer değilse, herkes bir tane var?

Ben daha sonra sitemde Bir mesaja url olarak kullanacağız çünkü kullanıcıların url dostu 'tarafından sunulan bir dizeleri yapmak gerekir.

Teşekkürler

BTW, onun PHP!

7 Cevap

Eğer kullanıcı girişi bazı bit almak istiyorum gibi geliyor

Enter Name: ___Bob Smith_____

Ve daha sonra bir URL parçası olarak bu girişi kullanmak

http://example.com/bob-smith

Eğer peşinde olduğun buysa, sihirli sizin için yapacak hiçbir PHP işlevi yoktur. Böyle bir şey benim yaklaşım için

  1. Bu URL güvenli böylece adını aşağı sterilize

  2. Gerekirse, dizenin sonuna benzersiz bir veritabanı tanımlayıcı eklemek

1 numara bir regex ile oldukça kolaydır

$url = strToLower(preg_replace('%[^a-z0-9_-]%six','-',$name)); //does a-z catch unicode?

İşte Bob Smith bob-smith dönüşecektir.

Her dize için benzersiz bir parçasını almak sizin için önemli ise, # 2 için bazı planları ile gelip gerekir. Aşağıdaki dizeleri düşünün

Bob  Smith
Bob" Smith

Her ikisi de aşağı dezenfekte olacak

Bob--Smith

Şansını bir veritabanında bu bilgiyi depolamak, yani dize birincil anahtar çalışacak ekleme konum vardır. Ayrıca URL parçası olarak birincil anahtar dahil olabilir. Örneğin, birincil anahtar varsayarak basit bir tamsayı auto_increment.

http://example.com/27/bob-smith/
http://example.com/bob-smith_27

Orada urlencode, ama ben o aradığınız tam olarak ne olup olmadığından emin değilim

Apache çalıştıran şartıyla, yeniden yazma kullanıcı dostu URL'ler sağlar mod_rewrite, bir Apache modülü arıyoruz düşünüyorum. Yeni başlayanlar için bir rehber bulunabilir here. Bunu içine defterleri önce, host veya sunucu mod_rewrite desteklediğinden emin olun.

Eğer onlar yüzde olarak kodlanmış kelimeler değildir ve gösterileri gibi olmak ASCII olmayan karakterler olmasını istiyorsanız, Unicode kullanmak ve UTF-8 ile URL kodlamak gerekir. Yani, örneğin, yerine ISO 8859-1 kodlanmış kelime 0xC4 UTF-8 kodlanmış kelime 0xC384 kullanmak, sizin URL Ä karakter kullanmak istiyorsanız. Fark (durum çubuğunda URL bir göz atın):

Ä
Ä

Ne istediğiniz bir wordpress sonrası sümüklü böcek gibi bir şey olabilir. Wordpress, işlev (sanitize_title_with_dashes), temelde, giriş sanitizes kodlar ve yaratır '-' ayrılmış url.

Ben ne istiyorum New Storm Hits Winter! new-storm-hits-winter gibi bir şey haline çevirmek için bir şey olduğuna inanıyorum.

Bu fonksiyon CodeIgniter "çalıntı" ve tam olarak bunu yapıyor edilmektedir:

/**
 * Create URL Title
 *
 * Takes a "title" string as input and creates a
 * human-friendly URL string with either a dash
 * or an underscore as the word separator.
 *
 * @access  public
 * @param   string	the string
 * @param   string	the separator: dash, or underscore
 * @return  string
 */
if ( ! function_exists('url_title'))
{
    function url_title($str, $separator = 'dash', $lowercase = FALSE)
    {
    	if ($separator == 'dash')
    	{
    		$search		= '_';
    		$replace	= '-';
    	}
    	else
    	{
    		$search		= '-';
    		$replace	= '_';
    	}

    	$trans = array(
    					'&\#\d+?;'				=> '',
    					'&\S+?;'				=> '',
    					'\s+'					=> $replace,
    					'[^a-z0-9\-\._]'		=> '',
    					$replace.'+'			=> $replace,
    					$replace.'$'			=> $replace,
    					'^'.$replace			=> $replace,
    					'\.+$'					=> ''
    				  );

    	$str = strip_tags($str);

    	foreach ($trans as $key => $val)
    	{
    		$str = preg_replace("#".$key."#i", $val, $str);
    	}

    	if ($lowercase === TRUE)
    	{
    		$str = strtolower($str);
    	}

    	return trim(stripslashes($str));
    }
}