1

I'm trying to implement search REST API for Wordpress. Everything works fine in English, however, when I enter some Arabic in the URL, it would tell me rest_no_route.

This it my working version for English

        register_rest_route(
            'search', 
            '/keywords/(?P<value>[\w+].+)', 
            $args
        );

After done some research, it was suggest that I should add [ء-ي] to my regex. However, I'm not quite sure where to add in the regex as Arabic reads from right to left.

I have tried (?P<value>[ء-ي][\w+].+) or [ء-ي](?P<value>[\w+].+) it still won't work.

Any suggestions?

Jian Ku
  • 13
  • 2

1 Answers1

0

The \w shorthand in PHP, be default, does not match Unicode letters and digits. You would need to use (*UCP) (probably with (*UTF)) PCRE verb to make it match all Unicode letters/digits. See an example.

In your case, you may simply remove \w+ and keep .+ to match any 1+ chars other than line break chars:

/keywords/(?P<value>.+)
Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563