Мне нужно регулярное выражение, которое удаляет слова, указанные в заголовке. Я пробовал ниже регулярное выражение, но это не сработало. Также я хочу извлечь "#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#"
Если я правильно понял, вам нужно имя (?) пользователя между первыми двумя хэштегами и удалить все остальное. Ваше регулярное выражение жадное, значит, оно захватывает больше, чем должно. Добавьте хэштег в список «не соответствует», и он будет захватывать все, пока не найдет другой хэштег.
$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]
Каков ваш ожидаемый результат?