Как я могу получить все слова, начинающиеся с {$ HTML-страницы с php-функцией

124
14

Я хочу получить все слова, начинающиеся с $ моей html-страницы в массиве.

Содержимое HTML-страницы test.html

<p>{$Nom}</p>
<p>{$Prenom}</p>
<p>{$Adresse}</p>
<p>{$CP}</p>
<p>{$Ville}</p>

функция PHP

$filename = "test.html";
$handle = fopen($filename, "r");
$input = fread($handle, filesize($filename));
$pattern = '/[$](\w+)/';
$matches = array();
preg_match_all('/\$\w+/', $input, $matches);
print_r($matches);

Отображаемые результаты

Массив ([0] => Массив ([0] => $ NOM [1] => $ PRENOM [2] => $ ADRESSE [3] => $ CP [4] => $ VILLE [5] =>) )

Желаемые результаты с дублированием:

NOM PRENOM ADRESSE CP VILLE

спросил(а) 2017-02-01T15:43:00+03:00 3 года, 9 месяцев назад
1
Решение
72

На самом деле есть более простой способ, чем делать то, что сказал тебе Рэй. Ты можешь

$filename = "test.html";
$handle = fopen($filename, "r");
$input = fread($handle, filesize($filename));
$matches = array();

// see the important part is wrapping the \w+ inside ( )
preg_match_all('/\$(\w+)/', $input, $matches);

print_r($matches);

потому что wrapping something with() в Regex фактически вернет другой массив, содержащий эту часть соответствия. Таким образом, будет возвращен другой массив, содержащий части (\ w+) вашей строки, что означает только слова. Итак, теперь вышесказанное выведет

Array
(
[0] => Array
(
[0] => $Nom
[1] => $Prenom
[2] => $Adresse
[3] => $CP
[4] => $Ville
)

[1] => Array
(
[0] => Nom
[1] => Prenom
[2] => Adresse
[3] => CP
[4] => Ville
)

)

Но не забывайте, что теперь вам нужны $matches[1]

ответил(а) 2017-02-01T15:53:00+03:00 3 года, 9 месяцев назад
41

конечно, просто сделайте следующее, так как они вам нужны в массиве

     <?php 
$filename = "test.html";
$handle = fopen($filename, "r");
$input = fread($handle, filesize($filename));
$pattern = '/[$](\w+)/';
$matches = array();
preg_match_all('/\$\w+/', $input, $matches);

$final_result = array();
$index=0;
foreach($matches as $match){
$final_result[$index] = str_replace('\$','',$match[$index]);
$index++;
}

ответил(а) 2017-02-01T15:50:00+03:00 3 года, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема