Я хочу сгруппировать слова, начинающиеся с символа $, из содержимого текстовой области. Это содержимое редактора. Пример параграф:
Hi $firstname, Please find the company credentials mentioned below: Employee Name: Employee ID: Employee username: $username Email ID: $email Password: $password Regards, Administration Team
Мой код:
$pattern = '/([$])\w+/';
preg_match($pattern, $input, $matches);
print_r($matches);
Выход:
Array (
[0] => $firstname
[1] => $
)
Мне нужен вывод:
Array (
[0] => $firstname
[1] => $username
[2]=>$email
[3]=>$password
)
Что я делаю не так?
$matches = array();
preg_match_all('/\$\w+/', $text, $matches);
print_r($matches);
Вам нужно использовать preg_match_all
. preg_match
возвращает только первое совпадение. Кроме того, исправьте регулярное выражение в соответствии с фактическим текстом:
$pattern = '/[$](\w+)/';
preg_match_all($pattern, $input, $matches);
foreach($matches as $match) {
echo $match[0] . ': ' . $match[1];
}
Это приведет к выводу:
$firstname : firstname
$username : username
$email : email
$password : password
[$]
. Они несут ответственность за$matches[1]
в вашем результате.preg_match_all()
- это то, что вам нужно, чтобы получить все совпадения.