Нужна помощь в составлении регулярки на PHP

79
23 июня 2021, 04:20

В HTML тексте имеется запись:

redirect('Some value','Some value 2');

Нужно получить 'Some value' и 'Some value 2' в две переменные. Удалось получить только строку в виде 'Some value','Some value 2'. Заранее спасибо за помощь.

Answer 1

Вот как вы получили строку вида 'Some value','Some value 2' - она хранится в переменной, ниже распишу что к чему:

<?php
    // Получение в переменную $string = "'Some value','Some value 2'"
    $string = str_replace("'", "", $string);  // Учитывая что вы получили строку с кавычками ''
    $values = explode(',', $string);
Answer 2

если строка именно такая и точно есть два значения в одинарных кавычках, то есть если оно из них пустое, то должно быть '', то вот регулярка, которая просто выдает массив значений заключенных к одинарные кавычки

<?php
$string = "redirect('Some value','Some value 2');";
$pattern = '/\'.*?\'/';
preg_match_all($pattern, $string, $arr);

//результаты
echo $arr[0][0] . "\n";
echo $arr[0][1];
//выводит
// 'Some value'
// 'Some value 2'
Answer 3

Если сделать допущение, что внутри кавычек нет других кавычек, то самый простой вариант:

preg_match(
    "/redirect\('(?<val1>.*?)','(?<val2>.*?)'\);/",
    "redirect('Some value','Some value 2');",
    $matches
);
var_dump($matches['val1']);
var_dump($matches['val2']);

В результате:

string(10) "Some value"
string(12) "Some value 2"
Answer 4

Можно дальше и не регулярным выражением:

$string = my_get_string_from_incoming_html("... redirect('Some value','Some value 2'); ...");
$strings = explode(",", $string);
READ ALSO
Поиск в выпадающем списке WooCommerce (WP)

Поиск в выпадающем списке WooCommerce (WP)

Подскажите, пожалуйста, как добавить на сайт WordPress в оформление заказа поле с ПОИСКОМ по станциям метроЯ использую плагин Saphali WC Lite, там добавила...

168
как стилизовать ссылку страницы на которой я сейчас нахожусь

как стилизовать ссылку страницы на которой я сейчас нахожусь

Вывожу ссылки страныц, но не знаю как стилизовать ссылку страницы на которой я сейчас нахожусьКак это сделать?

180