Как я могу получить все слова, начинающиеся с {$ HTML-страницы с php-функцией
Я хочу получить все слова, начинающиеся с $ моей 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
На самом деле есть более простой способ, чем делать то, что сказал тебе Рэй. Ты можешь
$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]
конечно, просто сделайте следующее, так как они вам нужны в массиве
<?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++;
}