Удалить все слова из строки "#User #, <br><br> Спасибо # за предоставление" между '# User #' и "#", а также извлечь "# User #" из строки - PullRequest
0 голосов
/ 09 апреля 2019

Мне нужно регулярное выражение, которое удаляет слова, указанные в заголовке.Я попробовал ниже регулярное выражение, но это не сработало.Также я хочу извлечь "# User #" из данной строки - означает, начиная с '#' и заканчивая '#' из строки, которая не содержит пробелов.

preg_match_all("~#(.*?)#~", “#User#,<br><br>Thanks#For providing” , 
$wordReplaceArr_tmp);

Result of above code is below:

Output: User#,<br><br>Thanks

Expected result: "#User#"

1 Ответ

1 голос
/ 09 апреля 2019

Если я вас правильно понял, вы хотите указать имя (?) Пользователя между первыми двумя хэштегами и удалить все остальное.Ваше регулярное выражение является жадным, значит, оно захватывает больше, чем следовало бы.Добавьте хэш-тег в список «не совпадать», и он будет захватывать только все, пока не найдет другой хэш-тег.

$str = '#User#,<br><br>Thanks#For providing';
preg_match_all('/#([^#]+)#/mis', $str, $matches);

print_r($matches);

Результат этого кода следующий:

Array
(
    [0] => Array
        (
            [0] => #User#
        )

    [1] => Array
        (
            [0] => User
        )

)

Вы можете получить доступ к пользователю сейчас с помощью $matches[1][0]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...