If a character is not URL-friendly without being encoded, then in my
mind it serves no purpose in a clean URL. If you are running an
internationalised multi-lingual website then is it not feasible to
rely on something other than a localised URL segment to serve the
content?

Surely something like /tw/posts/view/whats-the-project-name-is or
even /posts/view/whats-the-project-name-is/lang:tw is better than
turning the address bar to localised gibberish.

On Aug 12, 8:44 pm, joshua <[email protected]> wrote:
> I got what you say. Consider multi-language case.
> For English, I use following code to make the friendly url
> [code]
>             $string = strtolower($string);
>             // Any non valid characters will be treated as _, also remove
> duplicate _
>             $string = preg_replace('/[^a-z0-9_]/i', '-', $string);
>             $string = preg_replace('/_[_]*/i', '-', $string);
>             // Cut at a specified length
>             if (strlen($string) > $currentMaximumURLLength){
>                 $string = substr($string, 0, $currentMaximumURLLength);
>             }
>             // Remove beggining and ending signs
>             $string = preg_replace('/_$/i', '', $string);
>             $string = preg_replace('/^_/i', '', $string);
>
>             return $string;
> [/code]
>
> But for none English language, for example, in Chinese. I should encode the
> url firstly.
> Addslashes is not nessary, you can consider just urlencode case.
>
> [code]
> $url = urlencode($url);
> //$url='what%26%23039%3Bs+the+project+name+is%3F'
> [/code]
>
>
>
> On Wed, Aug 12, 2009 at 8:32 PM, Robert P <[email protected]> wrote:
>
> > That URL looks extremely unfriendly to me. I can understand urlencode
> > (), but why addslashes() as well?
>
> > This has been covered many, many, many times before. For friendly &
> > clean URLs use:
> >    Inflector::slug($url, '-');
>
> > On Aug 12, 8:17 pm, joshua <[email protected]> wrote:
> > > I want to make a friendly url in my app.
> > > So assume the url likes following:
> > > [code]
> > > var $url = "what's the project name is?";
> > > [/code]
>
> > > Before I insert this url into database, I want to encode it firstly.
> > > [code]
> > > $url = urlencode(addslashes($url)); //$url
> > > ='what%26%23039%3Bs+the+project+name+is%3F'
> > > [/code]
>
> > > So in the post list view, the post link looks like:
> > > [url]
> >http://www.example.com/posts/view/what%26%23039%3Bs+the+project+name+...
> > > [/url]
>
> > > But when I try to get the parameter in post controller, it print 'what',
> > not
> > > the whole string('what%26%23039%3Bs+the+project+name+is%3F').
>
> > > PostsController:
> > > [code]
> > > function view($url){
> > >   debug($url);// print out "what"}
>
> > > [/code]
> > > As you can see the strng after 'what' was cut off. Is there any way that
> > I
> > > can get the whole parameter in post controller?
> > > Thanks in advance! :-]
>
> > > Joshua
> > > 5span.com <https://www.5span.com>
>
> --
> Thanks
> Joshua
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to