2013-12-20 2 views
0

Я использую форму контакта 7 для wordpress в сочетании с формой контакта db, чтобы отобразить результаты поля в переднем конце. Я пытаюсь отфильтровать результаты в коротком коде, например.
php regex: изменить только одно слово

<?php echo do_shortcode('[cfdb-value form="Testing" filter="FirstField~~/^s/"]'); ?> 

Этот фильтр будет показывать только значения FirstField, которые начинаются с буквы s, можно адаптировать этот код, чтобы показывать только одно значение слова (т.е. слова без пробелов). Если это вообще возможно? Любые предложения будут ценны!

+0

Try '^ \ ш +' вместо '^ \ s'. \ w означает «символ слова без пробелов», «+» означает «один или несколько». Я не уверен, что вам также нужно избегать обратной косой черты ('\\ вместо \'), так как я не знаю, как функция обрабатывает ее. –

+0

@MichaelHelwig это показывает только результаты, начинающиеся с 'w'. Я хочу показывать только результаты, состоящие из 1 слова (т. Е. Без пробелов) – user1374796

+0

Тогда функция, похоже, не правильно интерпретирует регулярное выражение. Вы пытались убежать (две обратные слэши вместо одного)? –

ответ

0

Вот регулярное выражение, которое не будет содержать слов (включая знаки препинания). Это позволяет юникода, хотя:

/^\w+$/u 

DEMO

Pass:

  • correct
  • foobar
  • definitelynot
  • unicodeæøå

Нет проход:

  • foo bar
  • bar-foo
  • foo.bar
  • noway, sir
0

Попробуйте ^s[a-zA-Z0-9]\*$ Начните с символа s и последуйте за любым количеством символов внутри скобок []. Другим способом будет ^s[a-zA-Z0-9]\*\S$, который настаивает на том, чтобы пробелы были в конце слова! Я не тестировал этот код, но идея должна быть там.

+0

Я просто хочу отфильтровать результаты с помощью пробелов, 'start with s 'валидация больше не нужна.Я использовал этот код раньше, хотя, который не работал, поскольку вставка скобок внутри короткого кода прерывает короткий код :( – user1374796

+0

Переполнение стека удалено \ * из моего первого ответа ... он должен быть там! – Low

+0

Какой был ваш первый ответ? Переполнение не удалит ваш ответ, пока у них не возникнет причина. –

0

Как об этом один:

/^(\S+)/ 

Этот захват все символы, которые не являются пробелы из начала строки.

+0

все еще не повезло :(обычно это регулярное выражение будет работать, но поскольку регулярные выражения находятся внутри короткого кода, некоторые и чтение как они должны. В начале слова «один работает отлично», поэтому я использовал это в качестве примера, но попытка показать только одно слово (без пробелов) оказывается сложной. – user1374796

+0

@ user1374796: Вы пытались сбежать более одного раза, т. е. '\\ \ S' – Toto

+0

да, все равно не повезло, это странно, я не могу понять :( – user1374796

Смежные вопросы