2010-07-12 3 views
1

я нашел это:PHP: вопрос о preg_replace()

$text = preg_replace('/\W+/', '-', $text); 

Любой человек может сказать мне, что именно это сделать? Там нет информации о том, какой '/ \ W + /' означает ..

С уважением

Javi

+1

http://www.regular-expressions.info/reference.html – Sarfraz

+2

Где вы искали информацию? Ссылка, предоставленная sAc, имеет множество возможностей, а также [руководство по PCRE] (http://pcre.org/pcre.txt), а также [руководство по PHP] (http://php.net/reference.pcre.pattern .syntax), а также множество других сайтов, вдохновляющих эти и другие источники. – salathe

+0

Я бы также рекомендовал взять на себя инициативу и попробовать это для себя –

ответ

2

\W означает не буквенно-цифровой символ, поэтому ничего, кроме a-z, A-Z, 0-9 или подчеркивание.

Это стандартный для регулярных выражений, ничего особенного для Php.

Вот отличный инструмент для тестирования регулярных выражений:

http://www.gskinner.com/RegExr/

Если поставить \W+ в поле в верхней части вы увидите, какие вещи он соответствует.

PS: Вот еще один инструмента, который проще и чище, хотя, возможно, не как особенность богатых:

http://rubular.com/

Она включает в себя удобные быстрые ссылки для регулярных выражений в нижней части.

1

Похоже, он заменяет все, что не является 'символом слова' (буква, цифра, подчеркивание) и делает их дефисами.

+0

Да. Это своего рода URL-адрес. Таким образом, вы можете легко использовать значение в URL-адресе. Например, если бы я хотел показать имена потоков в URL (SEO), я бы использовал это регулярное выражение для преобразования 'Почему это не работает?!?' На 'Why-doesn-t-this-work-'. Здесь это видно, это не идеально. По крайней мере, нужно выполнить надпись 'trim ($ url, '-')' на ней. – NikiC

1

Семейство функций preg использует Perl Compatible Regular Expressions или PCRE. Есть nice cheat sheet for them here (PDF).

\W означает «любой символ без слова», а + ограничивает его совпадением одного или нескольких предыдущих символов. «Символы слов» обозначаются буквами, цифрами и символами подчеркивания, поэтому \W будет соответствовать символам, которые не являются одним из них.

Ваша строка кода заменяет любое вхождение набора символов, которые не являются символами слова с дефисом.