2017-02-02 5 views
0

Я хотел бы проверить, есть ли символ до дефиса (-).Проверьте, есть ли что-то перед символом php

Если есть что-то добавить, то <br>-

Если есть только пространство, ничего не делать. Я не очень хорошо с регулярными выражениями :(

+0

показать нам плохую регулярное выражение, которое у вас есть –

+2

Вам нужно добавить на вопрос, что, если что-нибудь, вы пробовали. – Ale

+0

$ newstr = preg_replace ('/-\ ./ s', '
-', "Это одна строка - это будет вторая"); Это то, что я пробовал, но я думаю, что что-то должно быть перед дефисом в регулярном выражении –

ответ

0

Раньше я плохо с регулярным выражением в начале моей карьеры кодирования, а просто взять время, чтобы изучить его.

Узор вы ищете очень просто : ([^\s])(-)

Здесь вы можете проверить с ним: http://regexr.com/3f73e

[^\s] означает соответствие любых символов, кроме пробела (\s означает пробел)

.

- соответствует дефису

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

2

Раствор с помощью preg_replace функции и конкретный шаблон регулярных выражений:

$str = "The couch said: 'Use one-two-three combination'. -a) But it wasn't about boxing, it was about ping-pong"; 
$new_str = preg_replace("/(?<=\S)-/", "<br>-", $str); 

print_r($new_str); 

Выход (в виде вид-источник код):

The couch said: 'Use one<br>-two<br>-three combination'. -a) But it wasn't about boxing, it was about ping<br>-pong 

\S - указывает на непробельных знак

(?<=\S) - положительный assetion просмотра назад, уверяет, что дефис предшествует символ