selftrips
@selftrips

Как получить строчку таблицы через php и регулярные выражения?

На сайте публикую список курсов валют
selftrips.ru/tekushhie-kursy-vsekh-valyut-mira
Формирую мета поле и потом его вывожу.
Вот кусок такой таблицы

<tr><td>144</td><td><!--noindex-->Объединенные Арабские Эмираты (ОАЭ)<!--/noindex--></td><td>Дирхам (ОАЭ)</td><td><!--noindex-->AED<!--/noindex--></td><td><!--noindex-->784<!--/noindex--></td><td>1</td><td>18.27</td></tr>
<tr><td>143</td><td><!--noindex-->Норвегия<!--/noindex--></td><td>Норвежская крона</td><td><!--noindex-->NOK<!--/noindex--></td><td><!--noindex-->578<!--/noindex--></td><td>1</td><td>8.05</td></tr>
<tr><td>145</td><td><!--noindex-->Оман<!--/noindex--></td><td>Оманский риал</td><td><!--noindex-->OMR<!--/noindex--></td><td><!--noindex-->512<!--/noindex--></td><td>1</td><td>174.29</td></tr>


Теперь пытаюсь на страницу страны добавить курс. Казалось бы все просто — надо в таблице найти строчку с названием страны и вывести ее на странице страны.

Ищу строчку регулярным выражением
<tr.*?>(Норвегия)(.*?)<\/tr>
проверяю на https://regex101.com/ вроде работает нормально.

Но когда пытаюсь делать на сайте кодом

$str ='<tr><td>143</td><td><!--noindex-->Норвегия<!--/noindex--></td><td>Норвежская крона</td><td><!--noindex-->NOK<!--/noindex--></td><td><!--noindex-->578<!--/noindex--></td><td>1</td><td>8.05</td></tr>
<tr><td>144</td><td><!--noindex-->Объединенные Арабские Эмираты (ОАЭ)<!--/noindex--></td><td>Дирхам (ОАЭ)</td><td><!--noindex-->AED<!--/noindex--></td><td><!--noindex-->784<!--/noindex--></td><td>1</td><td>18.27</td></tr>
<tr><td>145</td><td><!--noindex-->Оман<!--/noindex--></td><td>Оманский риал</td><td><!--noindex-->OMR<!--/noindex--></td><td><!--noindex-->512<!--/noindex--></td><td>1</td><td>174.29</td></tr>';
echo '<table>', $str, '</table>';

$str1 = preg_quote ($str);
$result = preg_match('<tr.*?>(Норвегия)(.*?)<\/tr>', $str1, $found);


Ничего не находится. В чем может быть проблема?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
qork
@qork
{ background: #F00B42 }
Забыли делимитеры у строки с регуляркой и preg_quote на строке, в которой ищете, совсем не нужен.
https://ideone.com/DFLlTX

$str ='<tr><td>143</td><td><!--noindex-->Норвегия<!--/noindex--></td><td>Норвежская крона</td><td><!--noindex-->NOK<!--/noindex--></td><td><!--noindex-->578<!--/noindex--></td><td>1</td><td>8.05</td></tr>
<tr><td>144</td><td><!--noindex-->Объединенные Арабские Эмираты (ОАЭ)<!--/noindex--></td><td>Дирхам (ОАЭ)</td><td><!--noindex-->AED<!--/noindex--></td><td><!--noindex-->784<!--/noindex--></td><td>1</td><td>18.27</td></tr>
<tr><td>145</td><td><!--noindex-->Оман<!--/noindex--></td><td>Оманский риал</td><td><!--noindex-->OMR<!--/noindex--></td><td><!--noindex-->512<!--/noindex--></td><td>1</td><td>174.29</td></tr>';

preg_match('/<tr.*?>(Норвегия)(.*?)<\/tr>/', $str, $found);

var_dump($found);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 18:27
200000 руб./за проект
26 апр. 2024, в 18:24
80000 руб./за проект
26 апр. 2024, в 18:00
500 руб./за проект