2012-07-04 12 views
55

मैं "मेरी कंपनी & मेरा नाम" से "मेरी कंपनी-मेरा-नाम" में एक PHP चर को कैसे परिवर्तित कर सकता हूं?स्ट्रिप PHP वैरिएबल, डैश के साथ सफेद रिक्त स्थान को प्रतिस्थापित करें

मुझे इसे सभी लोअरकेस बनाने, सभी विशेष पात्रों को हटाने और डैश के साथ रिक्त स्थान बदलने की आवश्यकता है।

+5

[क्या आप की कोशिश की है?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – ManseUK

उत्तर

195

यह समारोह एक एसईओ अनुकूल स्ट्रिंग पैदा करेगा

function seoUrl($string) { 
    //Lower case everything 
    $string = strtolower($string); 
    //Make alphanumeric (removes all other characters) 
    $string = preg_replace("/[^a-z0-9_\s-]/", "", $string); 
    //Clean up multiple dashes or whitespaces 
    $string = preg_replace("/[\s-]+/", " ", $string); 
    //Convert whitespaces and underscore to dash 
    $string = preg_replace("/[\s_]/", "-", $string); 
    return $string; 
} 

ठीक होना चाहिए :)

+3

+1 सही टुकड़ा:) – Mahdi

+1

धन्यवाद। यह एक अच्छा आसान काम है, 'एस' और 'और' जैसे कुछ एसईओ-असभ्य कीवर्ड को अलग करने के लिए विस्तारित होना अच्छा होगा। – rorypicko

+0

यकीन है, यह वास्तव में ठीक काम करता है और यह विस्तार करने लायक है! – Mahdi

8

विशिष्ट वर्ण की जगह: http://se.php.net/manual/en/function.str-replace.php

उदाहरण:

function replaceAll($text) { 
    $text = strtolower(htmlentities($text)); 
    $text = str_replace(get_html_translation_table(), "-", $text); 
    $text = str_replace(" ", "-", $text); 
    $text = preg_replace("/[-]+/i", "-", $text); 
    return $text; 
} 
6

Yop, और यदि आप किसी विशेष चर को संभालना चाहते हैं cters आपको पैटर्न में उन्हें घोषित करने की आवश्यकता होगी, अन्यथा वे बाहर निकल सकते हैं। आप इसे इस तरह से कर सकते हैं:

strtolower(preg_replace('/-+/', '-', preg_replace('/[^\wáéíóú]/', '-', $string))); 
संबंधित मुद्दे